新西兰服务器

Java桥接模式示例代码分析


Java桥接模式示例代码分析

发布时间:2022-02-21 16:10:54 来源:高防服务器网 阅读:84 作者:iii 栏目:开发技术

这篇文章主要介绍“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桥接模式示例代码分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注高防服务器网网站,小编会继续努力为大家带来更多实用的文章!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[