Adapter(适配器) 结构型 类 1
Intent_意图2
将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间
Motivation_动机3
将一个类的接口转换成客户希望的另一个接口,使得不兼容的接口变成兼容接口,让客户从实现的接口解耦
Applicability_适用性4
1.需要使用现有的类,而此类的接口不符合系统的需求
2.用于建立 一些彼此之间没有太多关系,但未来有可能一起工作的类
3.将一个类插入另一从此类系中
Structure_结构5
Participants_参与者6
- Target(抽象目标) 定义客户所需要的接口
- Adapter(适配器) 适配器调用另一个接口,作为一个转换器,对Adaptee和Target进行适配
- Adaptee(适配者) 定义一个已经存在的接口,即是需要被适配的角色
Collaborations_协作7
Client通过Target接口调用Adapter的方法对Adapter发出请求
->Adapter使用Adaptee接口把请求转成Adaptee的一个或多个调用接口
->Client接收到调用的结果,但并未察觉这一切是Adapter在起转换作用
Comsequences_结果8
- 优点
让任何两个没有关联的类一起运行
提高类的复用
增加类的透明度 - 缺点
过多的使用适配器,使得代码非常规矩,不易把握 - 用途
需要有动机的修改一个正常运行的系统的接口
Implementation/Sample Code_实现/范例代码910
Target
public interface Duck {
public void quack();
public void fly();