桥接模式实例消息发送

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

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

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("喝一杯茶", "老张");
}
}
目录
相关文章
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
1445 0
|
NoSQL Linux 测试技术
Linux下Redis的安装、配置及开机自启动
Linux下Redis的安装、配置及开机自启动 系统版本: CentOS 7 Redis版本: Redis-6.2.5
46678 7
Linux下Redis的安装、配置及开机自启动
|
11月前
|
SQL 安全 关系型数据库
AWVS扫描在线站点实现安全评估
AWVS扫描在线站点实现安全评估
|
12月前
|
XML JSON API
淘宝商品详情API接口:获取商品信息的指南
淘宝详情API接口是淘宝开放平台提供的一种API接口,它允许开发者通过编程方式获取淘宝商品的详细信息。这些信息包括商品的基本属性、价格、库存状态、销售策略、卖家信息等,对于电商分析、市场研究或者商品信息管理等场景非常有用。
563 1
|
安全 关系型数据库 MySQL
揭秘MySQL海量数据迁移终极秘籍:从逻辑备份到物理复制,解锁大数据迁移的高效与安全之道
【8月更文挑战第2天】MySQL数据量很大的数据库迁移最优方案
1367 17
|
SQL 存储 关系型数据库
(五)MySQL索引应用篇:建立索引的正确姿势与使用索引的最佳指南!
在本篇中,则重点讲解索引应用相关的方式方法,例如各索引优劣分析、建立索引的原则、使用索引的指南以及索引失效与索引优化等内容。
1978 0
|
缓存 Linux 调度
Linux服务器如何查看CPU占用率、内存占用、带宽占用
Linux服务器如何查看CPU占用率、内存占用、带宽占用
4483 0
|
存储 关系型数据库 MySQL
深入研究MySQL意向锁
MySQL意向锁是一种特殊的表级锁,由InnoDB存储引擎在操作数据之前自动添加,无需用户干预。它分为意向共享锁(IS)和意向排他锁(IX)两种。意向锁的主要作用是协调行锁和表锁的关系,优化加锁策略,避免全表扫描判断是否存在行锁。意向锁之间不会冲突,但会与表级别的排他锁冲突,从而确保数据库并发访问的一致性和完整性。简而言之,意向锁提高了数据库并发操作的性能和效率。
23014 5
【手把手教学】最新ChatTTS语音合成项目使用指南【附所有源码与模型】
【手把手教学】最新ChatTTS语音合成项目使用指南【附所有源码与模型】