设计模式-适配器模式


适配器模式定义

适配器模式(Adapter): ** 将一个类的接口转换成客户希望的另外一个接口,是的原本由于接口不兼容而不能一起工作的那些类能一起工作,失配模式分为类结构型模式对象接口型模式**,前者类之间的耦合度比后者高,使用较少

特点

  1. *优点: *
    • 客户端通过适配器可以透明的调用目标接口
    • 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类
    • 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题
  2. *缺点: *
    • 对类适配器来说,更换适配器的实现过程比较复杂

模式的结构与实现

  1. 模式的结构

    • 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口

    • 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口

    • 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者

    类适配器模式结构图

    类适配器模式结构图

    对象适配器模式结构图

    对象适配器模式结构图

  2. 模式的实现

    • 目标与适配者

      //目标接口
      interface Target{
          void request();
      }
      //适配者接口
      class Adaptee{
          public void secificRequest(){
              System.out.println("适配者中的业务代码被调用!");
          }
      }
    • 类适配器模式

      /**
       * 类适配器模式
       * 定义一个适配器类实现当前系统的业务接口,同时又继承现有组件库中已存在的组件
       */
      //适配器类
      class ClassAdapter extends Adaptee implements Target{
          @Override
          public void request() {
              secificRequest();//调用适配者的方法
          }
      }
      //客户端代码
      public class ClassAdapterTest {
          public static void main(String[] args) {
              System.out.println("类适配器模式测试:");
              Target target = new ClassAdapter();
              target.request();
          }
      }
    • 对象适配器模式

      /**
       * 对象适配器模式
       * 将现有组件库中已经实现的的组件引入适配器类中,该类同时实现当前系统的业务接口
       */
      //对象适配器类
      class ObjectAdapter implements Target{
          //内部维护一个适配者对象
          private Adaptee adaptee;
          public ObjectAdapter(Adaptee adaptee) {
              this.adaptee = adaptee;
          }
      
          @Override
          public void request() {
              adaptee.secificRequest();//调用适配者的方法
          }
      }
      //客户端代码
      public class ObjectAdapterTest {
          public static void main(String[] args) {
              System.out.println("对象适配器模式测试:");
              Adaptee adaptee = new Adaptee();
              Target target = new ObjectAdapter(adaptee);
              target.request();
          }
      }

文章作者: Bryson
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Bryson !
评论
 上一篇
设计模式-桥接模式 设计模式-桥接模式
桥接模式的定义 *桥接(Bridge)模式: * 将抽象与实现分离,使他们可以独立变化,它是用组合关系代替继承关系来实现的,从而降低了抽象与实现这两个可变维度的耦合度 特点 *优点: * 由于抽象与实现分离,所以扩展能力强 其实现细节对客
2020-04-08
下一篇 
设计模式-代理模式 设计模式-代理模式
代理模式的定义 代理模式: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介 特点 *优点: * 代理模式在客户端与目标对象之间起到一个中介作
2020-04-02
  目录