定义
- 在程序世界中,经常会存在现有的程序无法直接使用,需要做适当的变换之后才能使用的情况。这种用于填补“现有的程序”和“所需的程序”之间差异的设计模式就是Adapter模式。
Adapter模式中的登场角色
- Target(对象)
- Client(请求者)
- Adaptee(被适配)
- Adapter(适配)
类适配器模式的类图(使用继承)
对象适配器模式的类图(使用委托)
拓展思路的要点
- 什么时候使用Adapter模式?可以认为现有的类经过充分测试过,Bug很少。Adapter模式会对现有的类进行适配,生成新的类。当出现Bug,只排查新的类即可。
- 现有的类还不能满足需求,但是有一部分可以复用,复用现有的类是明智的选择,修改则违背开闭原则。Adapter模式可以在完全不改变现有代码的前提下使现有代码适配于新的接口(API)。
- 版本升级与兼容。让新版本扮演Adaptee角色,旧版本扮演Target角色。接着编写一个扮演Adapter角色的类,让它使用新版本的类来实现旧版本的类中的方法。
- 功能完全不同的类,就不要用Adapter模式了。
相关的设计模式
- Bridge模式(第9章)
Adapter模式用于连接接口(API)不同的类,而Bridge模式则用于连接类的功能层次结构与实现层次结构。
- Decorator模式(第12章)
Adapter模式用于填补不同接口(API)之间的缝隙,而Decorator模式则是在不改变接口(API)的前提下增加功能。
本章所学知识
注意“使用继承”和“使用委托”这两种实现Adapter模式的方式和它们各自的特征。
注:博客中的图片来自网上。