概述

适配器模式 (Adapter Pattern) 将某个类的接口转换成客户希望的另一个接口,使接口不兼容的类也能够一起工作。又称包装器 (Wrapper)。既可以作为类结构型模式,也可以作为对象结构型模式。

优点:目标类和 adaptee 类解耦。提高了类的透明性和可复用性,灵活性和扩展性。
缺点:类结构型,使用有局限性;对象结构型,实现较复杂。

类结构型

class Adaptee {
  void a() {}
  void b() {}
}

interface Target {
  void c();
  void d();
}

class Adapter extends Adaptee implements Target {
  void c() {
    super.a();
  }
  
  void d() {
    super.b();
  }
}

图示:
image

对象结构型

class Adaptee {
  void a() {}
}

abstract class Target {
  void b();
}

class Adapter extends Target {
  Adaptee atee;
  
  void b() {
    atee.a();
  }
}

图示:
image

默认适配器:不想实现接口中全部方法时,可以定义一个实现该接口的抽象类,给出接口中所有方法的默认实现。这个抽象类的子类根据具体需求重写或者不重写超类中的接口方法。

双向适配器:在对象结构型中,如果 adapter 同时有 adaptee 和 target 的实例时,可以在 adaptee 的方法中使用 target 的方法,在 target 的方法中使用 adaptee 的方法。

参考

[1] 刘伟,设计模式,2011.

 posted on 2023-06-19 09:49  x-yun  阅读(7)  评论(0编辑  收藏  举报