- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
研磨设计模式之桥接模式
?
桥接模式(Bridge)
1? 场景问题
1.1? 发送提示消息
??????? 考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统都会有这样的功能,比如某人有新的工作了,需要发送一条消息提示他。??????? 从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的,比如加急消息是在消息上添加加急,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等等。??????? 现在要实现这样的发送提示消息的功能,该如何实现呢?
1.2? 不用模式的解决方案
1:实现简化版本??????? 先考虑实现一个简单点的版本,比如:消息先只是实现发送普通消息,发送的方式呢,先实现系统内短消息和邮件。其它的功能,等这个版本完成过后,再继续添加,这样先把问题简单化,实现起来会容易一点。?(1)由于发送普通消息会有两种不同的实现方式,为了让外部能统一操作,因此,把消息设计成接口,然后由两个不同的实现类,分别实现系统内短消息方式和邮件发送消息的方式。此时系统结构如图1所示:
??图1? 简化版本的系统结构示意图
?
下面看看大致的实现示意。
(2)先来看看消息的统一接口,示例代码如下:
/**
* 消息的统一接口
*/
public interface Message {
/**
* 发送消息
* @param message 要发送的消息内容
* @param toUser 消息发送的目的人员
*/
public void send(String message,String toUser);
}
?
(3)再来分别看看两种实现方式,这里只是为了示意,并不会真的去发送Email和站内短消息,先看站内短消息的方式,示例代码如下:
/**
* 以站内短消息的方式发送普通消息
*/
public class CommonMessageSMS implements Message{
public void send(String message, String toUser) {
System.out.println(使用站内短消息的方式,发送消息
+message+给+toUser);
}
}
同样的,实现以Email的方式发送普通消息,示例代码如下:
/**
* 以Email的方式发送普通消息
*/
public class CommonMessageEmail implements Message{
public void send(String message, String toUser) {
System.out.println(使用Email的方式,发送消息
+message+给+toUser);
}
}
2:实现发送加急消息
??????? 上面的实现,看起来很简单,对不对。接下来,添加发送加急消息的功能,也有两种发送的方式,同样是站内短消息和Email的方式。??????? 加急消息的实现跟普通消息不同,加急消息会自动在消息上添加加急,然后再发送消息;另外加急消息会提供监控的方法,让客户端可以随时通过这个方法来了解对于加急消息处理的进度,比如:相应的人员是否接收到这个信息,相应的工作是否已经开展等等。因此加急消息需要扩展出一个新的接口,除了基本的发送消息的功能,还需要添加监控的功能,这个时候,系统的结构如图2所示:?
??
???????????????????????????????????? ?图2? 加入发送加急消息后的系统结构示意图
(1)先看看扩展出来的加急消息的接口,示例代码如下:
/**
* 加急消息的抽象接口
*/
public interface UrgencyMessage extends Message{
/**
* 监控某消息的处理过程
* @param messageId 被监控的消息的编号
* @return 包含监控到的数据对象,这里示意一下,所以用了Object
*/
public Object watch(String messageId);
}
(2)相应的实现方式还是发送站内短消息和Email两种,同样需要两个实现类来分别实现这两种方式,先看站内短消息的方式,示例代码如下:
public class UrgencyMessageSMS implements UrgencyMessage{
public void send(String message, String toUser) {
message = 加急:+message;
System.out.pr
您可能关注的文档
最近下载
- PEP小学英语五年级下册第三单元测试卷.docx VIP
- 资阳市雁江区区属国有企业招聘笔试真题2023.docx VIP
- ISO50001能源管理体系程序文件大全.docx VIP
- 关于政治忠诚政治定力政治担当政治能力自我评价五个政治标准自查汇总.docx VIP
- 长沙银行社招笔试真题.pdf
- 2025年深度解析Palantir报告.pptx VIP
- 2025党委党支部班子在“党的自我革命认识增强党性权力规范运行从严监督执纪落实管党治党责任”新五个方面问题学习教育对照查摆问题清单.pdf VIP
- 技术服务管理制度.docx VIP
- 建筑工地基孔肯雅热防控和应急方案.docx VIP
- 糖尿病足疑难病例.pptx VIP
文档评论(0)