Adapter 模式思想原则:
希望复用一些现有的事物,但是现有事物不直接满足目前需要,但可以通过重新包装改造或组合多个事物产生一个新事物来满足目前实际需要的情况.
在现实生活中到处看到这个情况:电房电压器,各类电子设备使用的充电器或适配器.
从原则中我们可以得到以下三种实现方式:
1.类适配器(继承所有要被适配类)
类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用
2.对象适配器(引用被适配类对象执行所需功能)
采用“对象组合”的方式,更符合松耦合精神。
3.适当地继承与组合被适配类
注意点:
对于类适配器:
1.用一个具体的Adapter类对Adaptee和Taget进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。
2.使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子类。
3.仅仅引入了一个对象,并不需要额外的指针一间接得到Adaptee.
对于对象适配器:
1.允许一个Adapter与多个Adaptee,即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。
2.使得重定义Adaptee的行为比较困难。这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是引用Adaptee本身。
适用性
在以下各种情况下使用适配器模式:
1.系统需要使用现有的类,而此类的接口不符合系统的需要。
2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。
3.(对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。