知识卡片

装饰模式包装同宗对象适配器模式伪装异宗对象

普通读书笔记卡 · 1989.b

内容

装饰模式与适配器模式都是”包装+委托”,易混淆,核心区别是血缘关系:装饰模式只能 包装同一接口/父类下的同宗对象,属性行为体系一致才谈得上增强;适配器模式专门处理无血缘 关系的对象,把不属于目标接口家族的对象伪装成符合该接口,本质是转换而非增强。发散: 用丑小鸭类比——装饰模式是”丑小鸭本就是天鹅”逐步叠加增强;适配器模式是”天鹅被鸭妈妈 误认伪装成鸭子”,是身份转换。

参考来源

- 位置:《设计模式之禅(第2版)》第31章《结构类模式大PK》31.2节(源文件:_epub-src/text/part0141.html) - 结论依据:原文对比"装饰模式包装的是自己的兄弟类,隶属于同一个家族(相同接口或父类),适配器模式则修饰非血缘关系类,把一个非本家族的对象伪装成本家族的对象",并用丑小鸭故事分别演示装饰模式(丑小鸭本是天鹅,逐步强化外表和飞行能力)与适配器模式(鸭妈妈把天鹅伪装/误认成鸭子)两种叙事。 - 原始内容:装饰模式包装的是自己的兄弟类,隶属于同一个家族(相同接口或父类),适配器模式则修饰非血缘关系类,把一个非本家族的对象伪装成本家族的对象,注意是伪装,因此它的本质还是非相同接口的对象……我们要做的就是要设计两个对象:鸭和天鹅,然后鸭妈妈把一只天鹅看成了小鸭子。