zoukankan      html  css  js  c++  java
  • 适配器模式-Adapter

    适配器模式:将一个类的接口,转换成客户期望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

    适配器的作用:

      透明:通过适配器,客户端可以调用同一接口,因而对客户来说是透明的。

      重用:复用了现有的类,解决了现存类和复用环境要求不一致的问题。

      低耦合:将目标类和需要适配的类解耦,通过引入一个适配器重用现有的类,而无须修改原有代码(遵循开闭原则)

      

    使用聚合方式实现对象适配器:把需要适配的对象作为一个属性聚合到适配器类中,以修改目标接口包装被适配者

      public class TwoPhaseToThreePhaseAdapter implements ThreePhaseSocket {

        private GBTwoPhaseSocket twoPhaseSocket;

        public TwoPhaseToThreePhaseAdapter(GBTwoPhaseSocket twoPhaseSocket) {
          super();
          this.twoPhaseSocket = twoPhaseSocket;
        }

        @Override
        public void powerWithThree() {
          twoPhaseSocket.powerWithTwo();
          System.out.println("将二相电流转换为三相电流...");
        }
      }

    使用继承的方式实现适配器:通过继承需要被适配的类,实现对目标接口的匹配,单一的为某个类实现适配

      public class TwoPhaseToThreePhaseAdapterByExtends extends GBTwoPhaseSocket implements ThreePhaseSocket {

        // 转换过程
        @Override
        public void powerWithThree() {
          powerWithTwo();
          System.out.println("将二相电流转换为三相电流...");
        }

      }

    两种方式的区别:

      因为java是单继承的因此继承实现适配器只能单一的为某个类实现适配,而聚合的方式可以是通过设置不同的属性实现不同对不同类对象的适配。

  • 相关阅读:
    SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集
    SQLSERVER 时间函数汇总
    在网页中加入百度地图
    关于收到谷歌邮件 Googlebot can't access your site 的解决方法
    phoneGap 3.5 eclipise 模拟器调试
    将MongoDB设为Windows服务
    apply 判定变量类型
    angularjs 手动启动
    Angular js ie 7,8 兼容性
    jQuery 之正则表达式篇
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/6859066.html
Copyright © 2011-2022 走看看