适配器模式:将类的接口转换成客户希望的接口,使得原本由于接口不兼容的类可以一起工作。。
适配器模式 Adapter
适配器模式使得接口不兼容的两个类能在一起工作,通俗易懂的例子就是电源适配器。
- 系统中已经存在的类(遗留代码,或者没有源码等),接口并不符合当前需求,使用适配器适配,最大程度上保持代码重用
- 需要统一的输出接口,但是输入类型不可知
类图结构
结构解析
Target
客户端期望的接口类。
Adaptee
原有的类,或者被适配的类。
Adapter
适配器模式,适配类,用来将 Adaptee
转换为 Target
期望的接口。
Client
客户端,接口调用者。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class Target { public void request(){ System.out.println("Target::Request!"); } }
public class Adaptee { public void specificRequest(){ System.out.println("Adaptee::SpecificRequest!"); } }
public class Adapter extends Target { private Adaptee adaptee = new Adaptee();
@Override public void request() { adaptee.specificRequest(); } }
public class TestAdapter { public static void main(String[] args) { Target target = new Adapter(); target.request(); } }
Adaptee::SpecificRequest!
|
总结
- 优点
可以将目标类和被适配类解耦,引入适配器类并重用代码;增加了类的透明性和复用性。
- 缺点
Java
不支持多重继承,也就是每次只能适配一个类。
参考文档
- 大话设计模式
Android
源码设计模式解析与实战
- 适配器模式