桥接模式实例消息发送

简介: 桥接模式实例消息发送

发送消息
现在我们要实现这样一个功能:发送消息。从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的,比如加急消息是在消息上添加“加急”字样,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等等。现在要实现这样的发送提示消息的功能,该如何实现呢?

UML图:
在这里插入图片描述
代码:

package xaioxifasong;
 
public abstract class AbstractMeesage {
protected MessageMethod impl;
public AbstractMeesage(MessageMethod impl)
{this.impl=impl;
}
public abstract void sendMessage(String message,String user);
}
package xaioxifasong;
 
public interface MessageMethod {
public void send(String message,String user);
}
package xaioxifasong;
 
public class CommonMessage extends AbstractMeesage {
 
    public CommonMessage(MessageMethod impl) {
        super(impl);
        
    }
 
    @Override
    public void sendMessage(String message, String user) {
    impl.send(message,user);
    }
    
 
}
package xaioxifasong;
 
public class UrgentMessage extends AbstractMeesage {
 
    public UrgentMessage(MessageMethod impl) {
        super(impl);
        // TODO 自动生成的构造函数存根
    }
 
    @Override
    public void sendMessage(String message, String user) {
        message="加急"+message;
 impl.send(message,user);
    }
    public Object watch(String messageid)
    {return null;
 
}
}
package xaioxifasong;
 
public class SpecialMessage extends AbstractMeesage{
 
    public SpecialMessage(MessageMethod impl) {
        super(impl);
        
    }
 
    @Override
    public void sendMessage(String message, String user) {
    message="特急"+message;
        impl.send(message,user);
    }
    public void hurry(String messageid)
    {System.out.println("快点");
 
}
}
package xaioxifasong;
 
public class SMS implements MessageMethod {
 
    @Override
    public void send(String message, String user) {
        System.out.println("使用站内消息发送方式发送消息"+message+"给"+user);
        
 
    }
 
}
package xaioxifasong;
 
public class Email implements MessageMethod {
 
    @Override
    public void send(String message, String user) {
        System.out.println("以邮件方式发送消息"+message+"给"+user);
 
    }
 
}
package xaioxifasong;
 
public class MobileMeeage implements MessageMethod {
 
    @Override
    public void send(String message, String user) {
        System.out.println("手机短消息方式发送信息"+message+"给"+user);
        
 
    }
 
}
package xaioxifasong;
 
public class Test {
public static void main(String args[])
{MessageMethod impl=new SMS();
AbstractMeesage m=new CommonMessage(impl);
m.sendMessage("喝一杯茶", "小李");
MessageMethod impl2=new Email();
MessageMethod impl3=new MobileMeeage();
AbstractMeesage p=new UrgentMessage(impl2);
AbstractMeesage q=new SpecialMessage(impl3);
p.sendMessage("喝一杯茶", "小王");
q.sendMessage("喝一杯茶", "老张");
}
}
目录
相关文章
|
2月前
|
消息中间件
【消息队列开发】 实现Router类——交换机的转发规则
【消息队列开发】 实现Router类——交换机的转发规则
|
3月前
|
设计模式 算法 Java
【设计模式】策略模式在数据接收和发送场景的应用
在数据接收和发送场景打算使用了if else进行判断。ASystem.sync("向A同步数据");BSystem.sync("向B同步数据");...非常麻烦,需求多了很臃肿!策略模式(Strategy Pattern)定义了一组同类型的算法,在不同的类中封装起来,每种算法可以根据当前场景相互替换,从而使算法的变化独立于使用它们的客户端(即算法的调用者)。// 创建两个策略对象// 创建上下文对象,并传入策略对象。
75 1
|
9月前
|
传感器 负载均衡 物联网
MQTT v5共享订阅是怎么回事?如何使用共享订阅提高消息订阅的灵活性和可伸缩性?
MQTT v5共享订阅是怎么回事?如何使用共享订阅提高消息订阅的灵活性和可伸缩性?
276 1
|
3月前
|
消息中间件
三、消息队列中的交换机三种模式
三、消息队列中的交换机三种模式
44 0
|
消息中间件
rabbitMq 直连模式实现多消费者轮询消费(一对多)
今天通过rabbitMq的直连模式(direct)来实现多个消费者对消息的轮询读取 前提是已经安装了rabbitMq! 话不多说,步入正题: 首先创建一个连接mq的服务器:
373 0
rabbitMq 直连模式实现多消费者轮询消费(一对多)
|
消息中间件 Java Spring
RabbitMQ:第三章:Springboot集成RabbitMQ(直连模式,工作队列模式,发布订阅模式,路由模式,通配符模式)
RabbitMQ:第三章:Springboot集成RabbitMQ(直连模式,工作队列模式,发布订阅模式,路由模式,通配符模式)
363 0
RabbitMQ:第三章:Springboot集成RabbitMQ(直连模式,工作队列模式,发布订阅模式,路由模式,通配符模式)
代理模式实例订单系统
代理模式实例订单系统
105 0
代理模式实例订单系统
|
消息中间件 负载均衡 RocketMQ
消费者广播模式和负载均衡模式|学习笔记
快速学习消费者广播模式和负载均衡模式
91 0
消费者广播模式和负载均衡模式|学习笔记
|
消息中间件 负载均衡 RocketMQ
负载均衡-消息生产者|学习笔记
快速学习负载均衡-消息生产者
75 0
负载均衡-消息生产者|学习笔记