Adapter(适配器)---类对象结构型模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

包装器Wrapper。

你想使用一个已经存在的类,而它的接口不符合你的需求。

你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。

类适配器和对象适配器有不同的权衡。

1、类适配器:Adapter同时继承于Target(客户使用的与特定领域相关的接口)与Adaptee(需要适配的接口)。

用一个具体的Adapter类对Adaptee和Target进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。

使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子类。

仅仅引入了一个对象,并不需要额为的指针以间接得到adaptee。

2、对象适配器:通过组合的方式。继承于Target,把Adaptee(需要适配的对象)作为一个内部属性。

允许一个Adapter与多个Adaptee----即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的的Adaptee添加功能。

扫描二维码关注公众号,回复: 847729 查看本文章

使得重定义Adapter的行为比较困难。这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是引用Adaptee本身。

使用双向适配器提供透明操作。使用适配器的一个潜在问题是,它们不对所有的客户都透明。被适配的对象不再兼容Adaptee的接口,因此并不是所有Adaptee对象可以被使用的地方它都可以被使用。双向适配器提供了这样的透明性。在两个不同的客户需要用不用的方式查看同一个对象时,双向适配器尤其有用。

Bridge模式目的是将接口部分和实现部分分离,从而对它们可以较为容易也相对独立的加以改变。而Adapter则意味着改变一个已有对象的接口。

Decorator模式增强了其他对象的功能而同时又不改变它的接口。因此decorator对应用程序的透明性比适配器要好。

Proxy模式在不改变它的接口的条件下,为另一个对象定义了一个代理。

猜你喜欢

转载自linshiquan.iteye.com/blog/1025927