bigtalk.jpg

第17章 在NBA我需要翻译——适配器模式

定义

将一个类的接口转换成客户需要的另一个类的接口。两种:类适配器,可以多继承实现;对象适配器,可以定义一个适配器类,适配器类中包含目标对象,适配器接口调用目标对象的特定接口。

实现(对象适配器)

用于系统的数据行为都正确但是接口使用方式不统一的情况。实现:

  • Client: 使用者,期望使用 request() 的方式来发送请求。
  • Target: 使用者期望的接口(或者抽象类),里面有 request(), 所有符合使用者的处理者应该继承这个类。
  • Adapter: 继承了Target的适配器,适配器中包含不符合规范需要适配的处理者,它 request() 调用不符合规范处理者的特殊接口。
  • Adaptee: 不符合规范的处理者,它的接口不是 request() 但是做了同样的事情,通过Adapter适配器 request() 调用,才能为Client所用。

对象适配器模式类图:

img

对象适配器模式客户端代码:

img

场景

总之就是两个类的行为一样,但是接口不同的情况下,通过适配器满足相互调用。一般在设计初期就要统一好接口,复用旧类才使用该模式;也有时候支持第三方兼容的时候(软件不想改变接口又想支持使用第三方功能),会考虑这个模式。