这个问题被问已经在这里,但不是回答具体问题,的装饰图案作品是如何给予,而不是描述.我想再次提出这个问题,因为通过阅读装饰器模式的工作方式,我的答案并不是很明显(我已经阅读了维基百科的文章和Head First Design Patterns一书中的部分).
基本上,我想知道为什么必须创建一个实现(或扩展)某个接口(或抽象类)的抽象装饰器类.为什么所有新的"装饰类"都不能简单地实现(或扩展)基本抽象对象本身(而不是扩展抽象装饰类)?
为了使这个更具体,我将使用设计模式书中处理咖啡饮料的例子:
BeverageHouseBlend简单的延伸BeverageCondimentDecorator创建了一个扩展Beverage并具有实例的抽象类BeverageMilk创建一个扩展的类CondimentDecorator我想理解为什么我们需要这个CondimentDecorator类,以及为什么类Milk不能简单地扩展Beverage类本身并Beverage在其构造函数中传递一个实例.
希望这很清楚...... 如果不是,我只想知道为什么这个模式需要抽象装饰器类?谢谢.
编辑:我试图实现这一点,省略了抽象装饰器类,它似乎仍然有效.这个抽象类是否存在于此模式的所有描述中,仅仅因为它为所有新装饰类提供了标准接口?