Java设计模式之桥接模式的示例详解
目录
定义案例需求方案一方案二对比分析总结定义
桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。
案例
需求
通过企业微信和qq的方式给员工发送消息
方案一
定义发送消息的接口
/** * 发送消息的接口 * @author:liyajie * @createTime:2022/2/21 10:33 * @version:1.0 */ public interface AbstractSendMsgService { // 发送消息 public void sendMsg(); }
定义普通消息接口
/** * 普通消息接口 * @author:liyajie * @createTime:2022/2/21 11:32 * @version:1.0 */ public interface CommonMsg extends AbstractSendMsgService{ }
定义微信消息实现类
/** * 发送消息的实现接口 * @author:liyajie * @createTime:2022/2/21 10:35 * @version:1.0 */ public class WxMsgServiceImpl implements CommonMsg{ @Override public void sendMsg() { System.out.println("老板使用微信给你发了消息,快去接收吧"); } }
定义QQ消息实现类
/** * 发送消息的实现接口 * @author:liyajie * @createTime:2022/2/21 10:35 * @version:1.0 */ public class QqMsgServiceImpl implements CommonMsg{ @Override public void sendMsg() { System.out.println("老板使用QQ给你发了消息,快去接收吧"); } }
定义测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/21 10:37 * @version:1.0 */ public class Test { public static void main(String[] args) { new WxMsgServiceImpl().sendMsg(); new QqMsgServiceImpl().sendMsg(); } }
测试结果
方案二
定义发送消息抽象接口
/** * 发送消息的抽象接口 * @author:liyajie * @createTime:2022/2/21 10:33 * @version:1.0 */ public abstract class NewAbstractSendMsgService { protected SendMsgImplementor sendMsgImplementor; public NewAbstractSendMsgService(SendMsgImplementor sendMsgImplementor){ this.sendMsgImplementor = sendMsgImplementor; } // 微信 public void sendMsg(){ this.sendMsgImplementor.sendMsg(); } }
定义发送消息实现类
/** * 发送消息的实现接口 * @author:liyajie * @createTime:2022/2/21 10:35 * @version:1.0 */ public class NewSendMsgServiceImpl extends NewAbstractSendMsgService{ public NewSendMsgServiceImpl(SendMsgImplementor sendMsgImplementor) { super(sendMsgImplementor); } @Override public void sendMsg() { super.sendMsg(); } }
定义发送消息统一接口
/** * 发送消息统一接口 * @author:liyajie * @createTime:2022/2/21 10:41 * @version:1.0 */ public interface SendMsgImplementor { void sendMsg(); }
定义微信发送消息实现类
/** * 微信发送消息 * @author:liyajie * @createTime:2022/2/21 10:45 * @version:1.0 */ public class WxImplementor implements SendMsgImplementor{ @Override public void sendMsg() { System.out.println("老板使用微信给你发了消息,快去接收吧"); } }
定义QQ发送消息实现类
/** * QQ发送消息 * @author:liyajie * @createTime:2022/2/21 10:45 * @version:1.0 */ public class QqImplementor implements SendMsgImplementor{ @Override public void sendMsg() { System.out.println("老板使用QQ给你发了消息,快去接收吧"); } }
定义测试类
/** * 测试类 * @author:liyajie * @createTime:2022/2/21 10:37 * @version:1.0 */ public class TestNew { public static void main(String[] args) { NewSendMsgServiceImpl newSendMsgService = new NewSendMsgServiceImpl(new QqImplementor()); newSendMsgService.sendMsg(); NewSendMsgServiceImpl newSendMsgService2 = new NewSendMsgServiceImpl(new WxImplementor()); newSendMsgService2.sendMsg(); } }
测试结果
对比分析
方案一,即一般实现方式,微信和QQ两种发送消息的方式需要同时去实现CommonMsg和AbstractSendMsgService两个接口中的方法,耦合性较高;另外比如新增紧急消息的发送或者新增短信的方式发送消息的需求,改动较多,扩展性较差。
方案二,为桥接模式实现方式,在消息类的构造方法中传入接口SendMsgImplementor,从而使发送消息的抽象和具体实现进行了分离,实现了解耦;后期新增紧急消息的发送或者新增短信的方式发送消息的需求,也只需要新增紧急消息类和短信发送类即可,和QQ,微信等发送消息互不影响,扩展方便,符合开闭原则,复用原则。
总结
桥梁模式分离了抽象部分和实现部分,从而极大地提供了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。
桥梁模式使得抽象部分和实现部分可以分别独立地扩展,而不会相互影响,从而大大提高了系统的可扩展性。
到此这篇关于Java设计模式之桥接模式的示例详解的文章就介绍到这了,更多相关Java桥接模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?