配器模式定义如下:
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 |
适配器模式可以分为对象适配器和类适配器。前者中,适配器与适配者之间是关联关系,后者是继承或者实现关系。
- 对象适配器的使用频率会相对较高,它的实现结构通常如下:
- 类适配器与对象适配器的最大区别在于适配器与适配者间的关系。类适配器中的关系为继承或者实现关系。
另一类特殊变种:缺省适配器。如果一个接口定义了10个方法,但某些实现中只需要其中的3个,直接使用的情况下,每个实现类都要实现这10个方法。这时可以引入一个抽象类实现接口,并未每个接口定义的方法提供一个空实现。这样具体实现类继承这个抽象类,就可以有选择的实现其中的一部分。这时的这个抽象类,我们称为缺省适配器。
总结:
- 优点:
- 解决不兼容场景
- 调用方和实现方解耦,增加透明性
- 已有模块和功能的复用,同时不修改它们的代码
- 一个对象适配器可以适配多个被适配者,简化对外接口
- 缺点:
- 类适配器由于Java不支持多继承,一次只能适配一个适配者
- 类适配器适配者不能为final类
- 类适配器的目标抽象类(target)只能为接口,因为不能多继承,有局限性