Adapter模式主要是为了解决一个或者几个类的方法的复用问题。或者在系统的扩展问题上,或者在两个系统之间的衔接问题上,或者是在系统设计阶段保留一个系统的可复用性上。Adapter模式主要有三个角色:
[b]1.Target:[/b] 这是Adapter需要兼容或者适应的客户接口;
[b]2.Adaptee:[/b] 这是Adapter所提供的接口的Source,即Adapter提供的代码的主要来源;
[b]3.Adapter:[/b] 这是设计提供的Adapter类,利用Adaptee提供的方法,经过封装,向客户提供需要的Target方法。
Adapter模式主要有两种,一种是类适配器,一种是对象适配器。一般而言,对象适配器的可适应性更强,这符合我们的设计准则,优先使用Composite而非Extends.
以下是UML图例:
[align=center][img]http://t-1.tuzhan.com/95fcedd92a9f/p-2/l/2012/07/22/21/8b9b0971ccdd482cbc13fdd4115930cb.gif[/img][/align]
[align=center]图1:类适配器[/align]
[align=center][img]http://t-1.tuzhan.com/540232a43d5d/p-2/l/2012/07/22/21/9b0a92d442d840fb939cc11a5dd2403a.jpg[/img][/align]
[align=center]图2: 对象适配器[/align]
[b]1.Target:[/b] 这是Adapter需要兼容或者适应的客户接口;
[b]2.Adaptee:[/b] 这是Adapter所提供的接口的Source,即Adapter提供的代码的主要来源;
[b]3.Adapter:[/b] 这是设计提供的Adapter类,利用Adaptee提供的方法,经过封装,向客户提供需要的Target方法。
Adapter模式主要有两种,一种是类适配器,一种是对象适配器。一般而言,对象适配器的可适应性更强,这符合我们的设计准则,优先使用Composite而非Extends.
以下是UML图例:
[align=center][img]http://t-1.tuzhan.com/95fcedd92a9f/p-2/l/2012/07/22/21/8b9b0971ccdd482cbc13fdd4115930cb.gif[/img][/align]
[align=center]图1:类适配器[/align]
[align=center][img]http://t-1.tuzhan.com/540232a43d5d/p-2/l/2012/07/22/21/9b0a92d442d840fb939cc11a5dd2403a.jpg[/img][/align]
[align=center]图2: 对象适配器[/align]