适配器模式

适配器模式

适配器模式的实现可分为两种, 一种称为类适配器,一种称为对象适配器

1. 类适配器

UML图如下, 适配器通过实现目标接口(Target),并通过组合的方式获取被适配对象(adaptee)的实例,从而实现适配,这种方式相对来讲更加灵活:

  • 它不仅可以适配被适配接口(adaptee),还可以适配被适配接口的子类(adaptee的子类); 如果子类有需要,可以重写被适配接口的某些方法,依然可以被正常适配

  • 虽然UML图中只给出了一个被适配对象,事实上适配器可以适配多个接口,从而实现目标接口. 适配器模式的关键点不在于它适配了多少个接口,而在于它通过提供适配器,将原来旧的接口适配到了新的接口上,与数量无关.

  • 推荐使用这种方式实现适配器模式

adapter-pattern

2. 对象适配器

UML图如下,这是适配器模式的第二种实现,它是通过实现目标接口(target),并继承被适配对象(adaptee2)实现的. 它的优缺点如下:

  • 实现方式简单,可以很方便地对被适配对象(adaptees)的方法进行重写.

  • 只能适配被适配器对象(adaptee2),无法适配被适配器对象的子类;如果子类对被适配器进行了重写,则需要重新实现适配器对象(adapter)

  • 不推荐使用这种方式实现适配器模式

adapter-pattern

参考文献

  1. http://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/adapter.html

  2. https://sourcemaking.com/design_patterns/adapter

示例代码

示例代码

您的支持将鼓励我继续创作!