Aha!设计模式(47)-适配器(4)

网友投稿 525 2022-10-12

Aha!设计模式(47)-适配器(4)

Aha!设计模式(47)-适配器(4)

结构

类适配器使用多重继承对一个接口与另一个接口进行匹配,如下图所示。

类适配器使用继承被适配类的方式进行适配。这时被适配类的实例和适配目标类的实例是同一个对象。面向适配目标的操作都会被转而调用实例自身的继承自被适配类的方法

对象适配器依赖于对象组合,如下图所示。

对象适配器是通过持有被适配类的对象的方式来进行适配,这时适配目标类的实例保持着被适配类的实例。面向适配对象的操作都会转而调用被适配类的方法。

参与者

• Target(Shape) —定义Client使用的与特定领域相关的接口。这可以看作是目标类的需求。

• Client(DrawingEditor)

— 与符合Target接口的对象协同。适配器的利用者,没有什么特殊的要求。

• Adaptee(TextView) — 定义一个已经存在的接口,这个接口需要适配。这句话可能需要商榷,因为那些接口需要适配并不决定于Adaptee有什么,而是决定于Target需要什么。

• Adapter(TextShape) — 对Adaptee的接口与Target接口进行适配。真正执行适配工作的类,有类适配和对象适配两种方式。

协作

• Client在Adapter实例上调用一些操作。接着适配器调用Adaptee的操作实现这个请求。

Adapter接口利用者的请求,将其转发给Adaptee。

作者观点

类适配和对象适配的区别本质上还是Has A和Is A之争。

注:

本文中蓝色粗体文字都引自《设计模式》一书。

觉得本文有帮助?请分享给更多人。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jsphp框架
下一篇:轻松实现图片上传,只用 2kb大小不需要框架(如何不让图片自动上传)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~