桥接模式实例消息发送

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

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

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月前
|
设计模式
使用桥接模式设计复杂的消息系统
举个例子,我们在平时办公的时候经常通过邮件消息、短信消息或者系统内消息与同事进行沟通。尤其在走一些审批流程的时候,我们需要记录这些过程以备查。根据类型来划分,消息可以分为邮件消息、短信消息和系统内消息。但是,根据紧急程度来划分,消息可以分为普通消息、加急消息和特急消息。显然,整个消息系统可以划分为两个维度,如下图所示。
38 0
|
2天前
|
设计模式 算法 Java
【设计模式】策略模式在数据接收和发送场景的应用
在数据接收和发送场景打算使用了if else进行判断。ASystem.sync("向A同步数据");BSystem.sync("向B同步数据");...非常麻烦,需求多了很臃肿!策略模式(Strategy Pattern)定义了一组同类型的算法,在不同的类中封装起来,每种算法可以根据当前场景相互替换,从而使算法的变化独立于使用它们的客户端(即算法的调用者)。// 创建两个策略对象// 创建上下文对象,并传入策略对象。
61 1
|
6月前
|
传感器 负载均衡 物联网
MQTT v5共享订阅是怎么回事?如何使用共享订阅提高消息订阅的灵活性和可伸缩性?
MQTT v5共享订阅是怎么回事?如何使用共享订阅提高消息订阅的灵活性和可伸缩性?
132 1
|
2天前
|
消息中间件
三、消息队列中的交换机三种模式
三、消息队列中的交换机三种模式
28 0
|
10月前
|
消息中间件 网络架构
RabbitMQ如何支持动态路由和消息转发
RabbitMQ支持动态路由和消息转发的方式主要是通过Exchange的特性来实现的。
151 0
|
9月前
|
设计模式 Java
架起连接:解析Java设计模式中的桥接模式
在软件开发领域,设计模式是一套经过验证的最佳实践方法,用于解决各种常见问题。桥接模式是一种结构型设计模式,其主要目标是将抽象部分与实现部分分离,使它们能够独立变化。在本文中,我们将深入了解桥接模式的核心思想、应用场景以及它在Java中的实际运用。
41 0
|
11月前
|
设计模式
关于观察者模式/发布订阅模式我所知道的
关于观察者模式/发布订阅模式我所知道的
73 0
|
12月前
|
消息中间件 Java 数据库
RabbitMQ:第二章:Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,防止消息丢失,TTL,死信队列,延迟队列,消息积压,消息幂等性)
RabbitMQ:第二章:Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,防止消息丢失,TTL,死信队列,延迟队列,消息积压,消息幂等性)
313 0
RabbitMQ:第二章:Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,防止消息丢失,TTL,死信队列,延迟队列,消息积压,消息幂等性)
代理模式实例订单系统
代理模式实例订单系统
94 0
代理模式实例订单系统