设计模式 适配器模式

本文将介绍设计模式中的适配器模式。

一、什么是适配器模式?

将一个类的接口转换为客户希望的另一个接口,从而让原本接口不兼容的类可以协同工作。

二、类适配器和对象适配器

适配器模式包括类适配器和对象适配器。

三、实现

1. 角色

  • Target 目标抽象类:
    • 定义客户所需的接口
  • Adaptee 适配者类:
    • 被适配的角色
    • 存在一个接口,该接口与 Target 目标抽象类中定义的接口并不兼容
  • Adapter 适配器类:
    • 作为一个适配器,将 Adaptee 适配者类的接口改造为 Target 目标抽象类所定义的客户所需接口

2. 类适配器的实现

Target:

1
2
3
public interface Target {
public void fun();
}

Adaptee:

1
2
3
4
5
public class Adaptee {
public void aFun() {
...
}
}

Adapter:

1
2
3
4
5
public class Adapter extends Adaptee implements Target {
public void fun() {
super.aFun();
}
}

3. 对象适配器的实现

Target:

1
2
3
public interface Target {
public void fun();
}

Adaptee:

1
2
3
4
5
public class Adaptee {
public void aFun() {
...
}
}

Adapter:

1
2
3
4
5
6
7
8
public class Adapter implements Target {

private Adaptee adaptee;

public void fun() {
adaptee.aFun();
}
}

四、双向适配器

该设计模式可以 “进化” 为双向适配器,使得双方都可以通过适配器进行相互调用。

五、优缺点

1. 优点

  • 无需修改原有代码便可以实现兼容新类的目的

参考

  • 《Java 设计模式》