定义
适配器模式将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。
解决的问题
现有一个系统A,已经上线,对外提供A1A2A3三个接口,一个新的系统C有C1C2C3三个接口,客户依然想使用A的接口方式来使用系统C的接口,但是C与A接口是不匹配的,客户无法直接使用C的接口,这时该怎么办?写一个新类B,将系统C的接口转换成客户所期望的接口。
系统C是被适配者,B是适配器,系统A是目标。
类图
![](https://img.haomeiwen.com/i10820743/49599f9cadaaa86c.png)
描述
- 识别出目标,看看Client想要的是什么,是A。
- 现在有的是ClassC,那么想办法把C提供给客户。
- 写一个类B,实现A或继承A,B是适配器。
- 在B内,覆盖A的方法,方法体用C的方法来实现。
- 把B给客户使用。
伪代码
public class Client{
A a;
public void setA(A a){
this.a = a;
}
public void move(){
a.A1();
}
}
public interface A{
public void A1();
}
public class ClassC{
public void C1(){}
public void C2(){}
public void C3(){}
}
public class AdapterB{
ClassC c;
public AdapterB(ClassC c){
this.c = c;
}
public void A1(){
c.C1();
c.C2();
c.C3();
}
}
示例:
Client client = new Client();
client.setA(new AdapterB(new ClassC()));
client.move();
一句话总结
客户所需要的功能,通过适配器B,间接调用C的接口实现,但是客户仍然按照A的方式调用。
网友评论