设计模式学习系列(8)--适配器模式
适配器模式:将一个类的接口变换成客户端所需要的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作
客户端所需要的接口:
1 | public interface Target { |
原有的、需要被适配的类:
1 | public class Adaptee { |
适配器:
1 | public class Adapter extends Adaptee implements Target { |
或对象适配器:
1 | public class Adapter2 implements Target { |
客户端代码:
1 | public class Demo { |
这里客户端所要用的是 Adaptee 的业务逻辑,但是需要的接口是 Target 类型的接口,原有的类 Adaptee 里提供的接口无法满足客户端的需求。所以这里就可以使用适配器 Adapter 来实现,根据 Target 的接口,来使用 Adaptee 的业务逻辑。
输出结果:
1 | doSomething |
适配器模式的使用场景
在已投产的系统中,当需要使用已有的类,但是这个类又不符合系统的接口时,使用适配器模式是最适合的,它可以将不符合系统的接口的类转换成符合系统的接口来使用。
《大话设计模式》中提到的一个典故:魏文王问扁鹊家中三兄弟谁的医术最好,扁鹊告诉魏文王,大哥最牛逼,然后是二哥,然后才是扁鹊。大哥治病都是在没发病之前就治好了,二哥是在刚发病的时候治好,而扁鹊病情严重的时候才治好的。这个故事告诉我们,适配器模式虽然好,但是最好还是在问题发生之前预防它,考虑全面,做好适配。