【发布时间】:2011-01-11 02:50:31
【问题描述】:
是否可以从对象中移除装饰器?
假设我有以下代码:
abstract class Item
{
decimal cost();
}
class Coffee : Item
{
decimal cost()
{ // some stuff }
}
abstract class CoffeeDecorator : Item
{
Item decoratedItem;
}
class Mocha : CoffeeDecorator
{
Item decoratedItem;
public Mocha(Coffee coffee)
{
decoratedItem = coffee;
}
}
public void Main(string[] args)
{
Item coffeeDrink = new Mocha(new Coffee());
}
有没有办法从我的新“咖啡”对象中删除“新 Mocha()”?
编辑:澄清 - 我希望能够只删除一个装饰器,而不是全部。因此,如果我在 Coffee 对象上有一个 Mocha 装饰器和一个 Sugar 装饰器,我想知道是否可以只删除“Mocha”装饰器。
【问题讨论】:
标签: c# design-patterns oop decorator