设计模式学习——Adapter(适配器)

意图:使控制范围之外的一个原有对象与某个接口匹配。

问题:系统的数据和行为都正确,但接口不符。通常用于必须从抽象类派生时。

解决方案:Adapter模式提供了具有所需接口的包装类。

参与者与协作者:Adapter改变了Adaptee的接口,使Adaptee与Adapter的基类Target匹配。这样Client就可以使用Adaptee了,好象它是Target类型。

效果:Adapter模式使原有对象能够适应新的类结构,不受其接口的限制。

实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包容类的方法。

结构图:

Facade模式与Adapter模式的比较:
1. 是否存在既有的类?Facade(是)、Adapter(是)
2. 是否必须按某个接口设计?Facade(否)、Adapter(是)
3. 对象需要多态行为吗?Facade(否)、Adapter(可能)
4. 需要更简单的接口吗?Facade(是)、Adapter(否)

结论:Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成另一个接口。

摘自《设计模式解析》(第2版)第7章

Tags:

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。