知识卡片
装饰保持接口
内容
装饰器必须和被装饰对象共享接口,客户端才无需知道对象是否被增强。[[透明装饰界面]]体现了这种透明性。发散:包装层一旦泄露特殊 API,组合链就会变脆。
参考来源
- 位置:第4章《结构型模式》4.4节「Decorator(装饰)」9.实现第1点「接口的一致性」(源文件:_epub-src/OEBPS/Text/part0073.xhtml)
- 结论依据:原文明确说明装饰对象的接口必须与它所装饰的Component的接口一致,因此所有ConcreteDecorator类必须有一个公共的父类,直接支持卡片对装饰器必须和被装饰对象共享接口、客户端才无需知道对象是否被增强的论述。
- 原始内容:"装饰对象的接口必须与它所装饰的Component的接口是一致的,因此,所有的ConcreteDecorator类必须有一个公共的父类(至少在C++中如此)。"