桥接模式实例消息发送

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

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

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("喝一杯茶", "老张");
}
}
目录
相关文章
|
9月前
|
消息中间件 Java Spring
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
101 2
|
5月前
|
消息中间件 存储 缓存
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
387 7
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
|
5月前
|
消息中间件 JSON Java
玩转RabbitMQ声明队列交换机、消息转换器
玩转RabbitMQ声明队列交换机、消息转换器
130 0
|
6月前
|
消息中间件
RabbitMQ广播模式
RabbitMQ广播模式
103 1
|
9月前
|
网络协议 视频直播 网络架构
广播和组播之间的区别
【4月更文挑战第12天】
1066 1
广播和组播之间的区别
|
8月前
|
消息中间件
02.交换机RabbitMQ交换机
02.交换机RabbitMQ交换机
100 0
|
9月前
|
消息中间件 微服务
RabbitMQ入门指南(十):延迟消息-死信交换机
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了死信交换机、死信交换机实现延迟消息等内容。
208 0
|
9月前
|
消息中间件
三、消息队列中的交换机三种模式
三、消息队列中的交换机三种模式
73 0
|
消息中间件 存储 Java
RabbitMQ之Exchange(交换机)属性及备用交换机解读
RabbitMQ之Exchange(交换机)属性及备用交换机解读
|
消息中间件 存储
RabbitMQ 发布确认 交换机 死信队列 延迟队列(上)
RabbitMQ 发布确认 交换机 死信队列 延迟队列(上)
111 0