知识卡片

装饰保持接口

普通读书笔记卡 · 1921.d.1

内容

装饰器必须和被装饰对象共享接口,客户端才无需知道对象是否被增强。[[透明装饰界面]]体现了这种透明性。发散:包装层一旦泄露特殊 API,组合链就会变脆。

参考来源

- 位置:第4章《结构型模式》4.4节「Decorator(装饰)」9.实现第1点「接口的一致性」(源文件:_epub-src/OEBPS/Text/part0073.xhtml) - 结论依据:原文明确说明装饰对象的接口必须与它所装饰的Component的接口一致,因此所有ConcreteDecorator类必须有一个公共的父类,直接支持卡片对装饰器必须和被装饰对象共享接口、客户端才无需知道对象是否被增强的论述。 - 原始内容:"装饰对象的接口必须与它所装饰的Component的接口是一致的,因此,所有的ConcreteDecorator类必须有一个公共的父类(至少在C++中如此)。"