这篇文章主要介绍“Java桥接模式示例代码分析”,在日常操作中,相信很多人在Java桥接模式示例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java桥接模式示例代码分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

定义

桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。

案例需求

通过企业微信和qq的方式给员工发送消息

方案一

定义发送消息的接口

/***发送消息的接口*@author:liyajie*@createTime:2022/2/2110:33*@version:1.0*/publicinterfaceAbstractSendMsgService{//发送消息publicvoidsendMsg();}

定义普通消息接口

/***普通消息接口*@author:liyajie*@createTime:2022/2/2111:32*@version:1.0*/publicinterfaceCommonMsgextendsAbstractSendMsgService{}

定义微信消息实现类

/***发送消息的实现接口*@author:liyajie*@createTime:2022/2/2110:35*@version:1.0*/publicclassWxMsgServiceImplimplementsCommonMsg{@OverridepublicvoidsendMsg(){System.out.println("老板使用微信给你发了消息,快去接收吧");}}

定义QQ消息实现类

/***发送消息的实现接口*@author:liyajie*@createTime:2022/2/2110:35*@version:1.0*/publicclassQqMsgServiceImplimplementsCommonMsg{@OverridepublicvoidsendMsg(){System.out.println("老板使用QQ给你发了消息,快去接收吧");}}

定义测试类

/***测试类*@author:liyajie*@createTime:2022/2/2110:37*@version:1.0*/publicclassTest{publicstaticvoidmain(String[]args){newWxMsgServiceImpl().sendMsg();newQqMsgServiceImpl().sendMsg();}}

测试结果

方案二

定义发送消息抽象接口

/***发送消息的抽象接口*@author:liyajie*@createTime:2022/2/2110:33*@version:1.0*/publicabstractclassNewAbstractSendMsgService{protectedSendMsgImplementorsendMsgImplementor;publicNewAbstractSendMsgService(SendMsgImplementorsendMsgImplementor){this.sendMsgImplementor=sendMsgImplementor;}//微信publicvoidsendMsg(){this.sendMsgImplementor.sendMsg();}}

定义发送消息实现类

/***发送消息的实现接口*@author:liyajie*@createTime:2022/2/2110:35*@version:1.0*/publicclassNewSendMsgServiceImplextendsNewAbstractSendMsgService{publicNewSendMsgServiceImpl(SendMsgImplementorsendMsgImplementor){super(sendMsgImplementor);}@OverridepublicvoidsendMsg(){super.sendMsg();}}

定义发送消息统一接口

/***发送消息统一接口*@author:liyajie*@createTime:2022/2/2110:41*@version:1.0*/publicinterfaceSendMsgImplementor{voidsendMsg();}

定义微信发送消息实现类

/***微信发送消息*@author:liyajie*@createTime:2022/2/2110:45*@version:1.0*/publicclassWxImplementorimplementsSendMsgImplementor{@OverridepublicvoidsendMsg(){System.out.println("老板使用微信给你发了消息,快去接收吧");}}

定义QQ发送消息实现类

/***QQ发送消息*@author:liyajie*@createTime:2022/2/2110:45*@version:1.0*/publicclassQqImplementorimplementsSendMsgImplementor{@OverridepublicvoidsendMsg(){System.out.println("老板使用QQ给你发了消息,快去接收吧");}}

定义测试类

/***测试类*@author:liyajie*@createTime:2022/2/2110:37*@version:1.0*/publicclassTestNew{publicstaticvoidmain(String[]args){NewSendMsgServiceImplnewSendMsgService=newNewSendMsgServiceImpl(newQqImplementor());newSendMsgService.sendMsg();NewSendMsgServiceImplnewSendMsgService2=newNewSendMsgServiceImpl(newWxImplementor());newSendMsgService2.sendMsg();}}

测试结果

对比分析

方案一,即一般实现方式,微信和QQ两种发送消息的方式需要同时去实现CommonMsg和AbstractSendMsgService两个接口中的方法,耦合性较高;另外比如新增紧急消息的发送或者新增短信的方式发送消息的需求,改动较多,扩展性较差。

方案二,为桥接模式实现方式,在消息类的构造方法中传入接口SendMsgImplementor,从而使发送消息的抽象和具体实现进行了分离,实现了解耦;后期新增紧急消息的发送或者新增短信的方式发送消息的需求,也只需要新增紧急消息类和短信发送类即可,和QQ,微信等发送消息互不影响,扩展方便,符合开闭原则,复用原则。

到此,关于“Java桥接模式示例代码分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!