知识卡片
装饰模式的定义与四个角色
内容
装饰模式动态给对象添加额外职责,比继承子类更灵活。四个角色:Component抽象构件; ConcreteComponent具体构件(被装饰的原始对象);Decorator装饰角色(持有Component引用, 委托执行);具体装饰角色(在委托前后插入修饰逻辑)。使用时反复用装饰类包裹同一引用来 叠加功能。发散:”层层包裹同一引用变量”是装饰模式区别于简单继承最直观的外部特征。
参考来源
- 位置:《设计模式之禅(第2版)》第17章《装饰模式》(源文件:_epub-src/text/part0077.html)
- 结论依据:原文给出装饰模式定义并逐一说明四个角色,展示Client类通过`component = new ConcreteDecorator1(component); component = new ConcreteDecorator2(component);`叠加装饰后调用operate的通用实现。
- 原始内容:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活……Decorator装饰角色……在它的属性里必然有一个private变量指向Component抽象构件。