千家信息网

Java桥接模式示例代码分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"Java桥接模式示例代码分析",在日常操作中,相信很多人在Java桥接模式示例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java桥接模式示
千家信息网最后更新 2025年01月20日Java桥接模式示例代码分析

这篇文章主要介绍"Java桥接模式示例代码分析",在日常操作中,相信很多人在Java桥接模式示例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"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桥接模式示例代码分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0