bigtalk.jpg
第17章 在NBA我需要翻译——适配器模式
定义
将一个类的接口转换成客户需要的另一个类的接口。两种:类适配器,可以多继承实现;对象适配器,可以定义一个适配器类,适配器类中包含目标对象,适配器接口调用目标对象的特定接口。
实现(对象适配器)
用于系统的数据行为都正确但是接口使用方式不统一的情况。实现:
- Client: 使用者,期望使用
request()
的方式来发送请求。 - Target: 使用者期望的接口(或者抽象类),里面有
request()
, 所有符合使用者的处理者应该继承这个类。 - Adapter: 继承了Target的适配器,适配器中包含不符合规范需要适配的处理者,它
request()
调用不符合规范处理者的特殊接口。 - Adaptee: 不符合规范的处理者,它的接口不是
request()
但是做了同样的事情,通过Adapter适配器request()
调用,才能为Client所用。
对象适配器模式类图:
img
对象适配器模式客户端代码:
img
场景
总之就是两个类的行为一样,但是接口不同的情况下,通过适配器满足相互调用。一般在设计初期就要统一好接口,复用旧类才使用该模式;也有时候支持第三方兼容的时候(软件不想改变接口又想支持使用第三方功能),会考虑这个模式。