啥是适配器模式,可以类比为一个东西,就是电源适配器,电源适配器是把220v转换为电脑可以使用的20v,本质上还是用的220v的电,只不过是通过这个电源适配器转换了一下。
介绍
啥是适配器模式,可以类比为一个东西,就是电源适配器,电源适配器是把220v转换为电脑可以使用的20v,本质上还是用的220v的电,只不过是通过这个电源适配器转换了一下,适配器模式同理,有一个类有我想要的功能,但是我现在不能直接使用,也不能修改,因为他是220v(国家提供的),所以我得搭配一个适配器转换成我可以使用的类,这就是适配器模式。
适配器模式有类适配器和对象适配器,类适配器是通过适配器继承目标类来实现复用已有功能,对象适配器是通过适配器类中new一个目标类对象,来实现复用已有功能。
类适配器
- client
客户端类,可以理解为电脑,就是使用者
- Target
目标,我客户端直接使用的接口
- adaptee
类比为220v电压,也就是系统中原有的类,我想用里面的功能
- adapter
适配器,实现target接口,里面方法怎么办呢?总不能手写具体逻辑吧,所以直接继承adaptee,完成功能复用+转换
总的来说就是适配器,实现客户端使用的接口,具体接口方法处理通过继承原有类来做处理
对象适配器
与类适配器不同的是,对象适配器是通过在适配器中new一个adaptee,然后通过对象调用方法,Target也从接口变为了抽象类,适配器继承此抽象类,实现方法,用new的adaptee对象的方法处理具体逻辑。
应用场景
- 复用系统原有的类,添加适配器,使用适配器,搞定
- 系统原有的类不能提供完整功能,添加适配器,适配器中逻辑稍加修改,使用,搞定
- 使用适配器模式我们可以在不改变现有代码的前提下,使现有代码适配于新的API接口
- 版本升级和兼容,不完全抛弃旧版本,使用适配器模式来适配旧版本
具体使用
1 | public static void main(String[] args) { |
结果:
1 | (hello!) |