适配器(Adapter)模式:
用于填补“现有的程序”和“所需的程序”之间差异。
Adapter模式也被称为Wrapper模式。Wrapper有“包装器”的意思,就像用精美的包装纸将普通商品包装成礼物那样,替我们把某样东西包起来,使其能够用于其他用途。
【为什么要使用Adapter模式】
很多时候,经常会用到现有的类。特别是当现有的类已经被充分测试过了,Bug很少,而且已经被用于其他软件是,更愿意将这些列作为组件重复利用。
Adapter模式会对现有的类进行适配,生成新的类。通过该模式可以很方便创建需要的方法群。当出现Bug时,可以很明确地知道Bug不在现有的类中,所以只需要调查扮演Adapter角色的类即可。
使用Adapter模式可以完全在不改变现有代码的前提下使现有代码适配于新的接口。此外,在Adapter模式中,并非一定需要现成的代码。只要知道现有类的功能,就可以编写出新的类。
【版本升级与兼容性】
可以使用Adapter模式使新旧版本兼容。如果之后只想维护新版本,可以让新版本扮演Adaptee角色,旧版本扮演Target角色。接着编写一个扮演Adapter角色的类,让它使用新版本的类来实现旧版本的类的方法。?
【功能完全不同的类】
当Adaptee角色和Target角色的功能完全不同时,Adapter模式是无法使用的。
Adapter模式有两种:
类适配器模式(使用继承的适配器)、对象适配器模式(使用委托的适配器)
使用继承的适配器

使用委托的适配器:
委托就是将某个方法的实际处理交给其他实例方法处理。


【角色】
【Target】负责定义所需的方法。Target限定了适配器实现的功能。
【Client】负责调用Target角色定义的方法
【Adaptee】被适配角色
【Adapter】适配器。满足Target的需求,可以通过继承/重写Target,加上继承Adaptee或者在内部使用adaptee的实例。