适配器模式(Adapter)

啥是适配器模式,可以类比为一个东西,就是电源适配器,电源适配器是把220v转换为电脑可以使用的20v,本质上还是用的220v的电,只不过是通过这个电源适配器转换了一下。

介绍

啥是适配器模式,可以类比为一个东西,就是电源适配器,电源适配器是把220v转换为电脑可以使用的20v,本质上还是用的220v的电,只不过是通过这个电源适配器转换了一下,适配器模式同理,有一个类有我想要的功能,但是我现在不能直接使用,也不能修改,因为他是220v(国家提供的),所以我得搭配一个适配器转换成我可以使用的类,这就是适配器模式。

适配器模式有类适配器和对象适配器,类适配器是通过适配器继承目标类来实现复用已有功能,对象适配器是通过适配器类中new一个目标类对象,来实现复用已有功能。

类适配器

  1. client

客户端类,可以理解为电脑,就是使用者

  1. Target

目标,我客户端直接使用的接口

  1. adaptee

类比为220v电压,也就是系统中原有的类,我想用里面的功能

  1. adapter

适配器,实现target接口,里面方法怎么办呢?总不能手写具体逻辑吧,所以直接继承adaptee,完成功能复用+转换

总的来说就是适配器,实现客户端使用的接口,具体接口方法处理通过继承原有类来做处理

对象适配器

与类适配器不同的是,对象适配器是通过在适配器中new一个adaptee,然后通过对象调用方法,Target也从接口变为了抽象类,适配器继承此抽象类,实现方法,用new的adaptee对象的方法处理具体逻辑。

应用场景

  • 复用系统原有的类,添加适配器,使用适配器,搞定
  • 系统原有的类不能提供完整功能,添加适配器,适配器中逻辑稍加修改,使用,搞定
  • 使用适配器模式我们可以在不改变现有代码的前提下,使现有代码适配于新的API接口
  • 版本升级和兼容,不完全抛弃旧版本,使用适配器模式来适配旧版本

具体使用

public static void main(String[] args) {
    // 对于main类而言,
    Print print = new PrintBanner("hello!");
    print.printWeak();
    print.printStrong();
}

结果:

(hello!)
*hello!*

适配器模式(Adapter)
https://www.powercheng.fun/articles/faafedbd/
作者
powercheng
发布于
2021年10月27日
许可协议