设计模式-结构型之适配器(adapter)模式

定义

  • 填补现有程序和所需程序的差异,填补不同接口(API)之间的缝隙。
  • 两种实现方式:
    – 类适配器:使用继承实现。
    – 对象适配器:使用聚合实现。

使用场景

  • 版本升级和兼容性;
  • 不改变现有代码的情况下适配新的接口(功能要相同)。
    – 举例:比如我们生活中的电子产品的充电器,将220V的家用电适配成符合电子产品所需的电压。

UML图

设计模式-结构型之适配器(adapter)模式_第1张图片

代码实现
  • 使用聚合实现(继承就不写了)
//目标:实现获取低电压
public abstract class Target {
    public abstract int getLowVoltage();
}
//被适配者:现有程序提供220V电压
public class Adaptee {

    public int getVoltage(){
        return 220;
    }
}
//适配器:利用现有程序功能实现新需求
public class Adapter extends Target {

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public int getLowVoltage() {
        return adaptee.getVoltage()/20;
    }
}
//测试
public class Client {
    public static void main(String[] args) {
        Adapter adapter = new Adapter(new Adaptee());
        int lowVoltage = adapter.getLowVoltage();
        System.out.println(lowVoltage);
    }
}

总结

  • 填补现有程序和所需程序的差异,填补不同接口(API)之间的缝隙。
  • 符合最少知道原则:对于Client而言,并不知道Adapter是如何实现的。
  • 两种方式:类适配器使用继承实现;对象适配器使用聚合实现。

你可能感兴趣的:(Design,Patterns)