适配器模式是把一个雷的接口转换为另外一种接口,以方便客户端调用。
这有什么意义呢?打个比方,美国的日用电压是110v,而我们中国是220v,中国的使用老美的电器就需要一个变压器,这个变压器就相当于适配器。
适配器有两种情况,分别是类的适配器和对象适配器模式,有什么区别呢?
类适配器
先看下 UML 类图
target 是最终需要的接口;
adaptee 是源适配,也就是需要适配的接口(老美的110v);
adapter 具体的适配器核心,把源转换成目标
这里 Adapter 继承 Adaptee,这个模式的缺点是源和源的子类无法都使用该适配器,也就继承的这个类有此功能,这就大大削弱了该模式的威力。下面稍加改造,能量就凸显出来,请看对象适配器模式
对象适配器模式
看下 UML 类图
在适配器里面引入源,这样源的所有方法都可以使用,如果是源的子类也可以传入,妙也。
什么时候使用这个模式
1、现有的类的接口不符合需求
2、用于彼此之间关系不大的类
3、不太适合对子类做适配器
模式都不是帮助我们做具体的事,只是属于一种思考问题和解决问题的方法;适配器模式并不是帮助我们做适配器的具体事,而是把源接口对接到目标接口提供一种方法。至于里面是怎么转换,还是得在 Adapter 里面自行实现。
适配器模式比较简单,不再码砖头做例子,我们日常开发前期开源把接口定好,然后呼啦啦的写代码,一旦接口不匹配,这个时候可以请出这个模式,简直神了。