附加是一个经典的装饰模式。我的问题是你将如何修改下面的代码,以便你可以包装零或一个顶部的比萨Singleton模式与装饰器相结合
现在我可以有一个Pepporini - >香肠 - > Pepporini - >比萨类驾驶总成本高达10美元,为Pepporini收取两次费用。
我不认为我想要使用责任链模式,因为顺序无关紧要,并不是所有的浇头都被使用?
谢谢
namespace PizzaDecorator
{
public interface IPizza
{
double CalculateCost();
}
public class Pizza: IPizza
{
public Pizza()
{
}
public double CalculateCost()
{
return 8.00;
}
}
public abstract class Topping : IPizza
{
protected IPizza _pizzaItem;
public Topping(IPizza pizzaItem)
{
this._pizzaItem = pizzaItem;
}
public abstract double CalculateCost();
}
public class Pepporini : Topping
{
public Pepporini(IPizza pizzaItem)
: base(pizzaItem)
{
}
public override double CalculateCost()
{
return this._pizzaItem.CalculateCost() + 0.50;
}
}
public class Sausage : Topping
{
public Sausage(IPizza pizzaItem)
: base(pizzaItem)
{
}
public override double CalculateCost()
{
return this._pizzaItem.CalculateCost() + 1.00;
}
}
public class Onions : Topping
{
public Onions(IPizza pizzaItem)
: base(pizzaItem)
{
}
public override double CalculateCost()
{
return this._pizzaItem.CalculateCost() + .25;
}
}
}
作业的任何机会? – womp 2010-04-20 20:56:50
不,认为我隐瞒了“真实”的应用程序,为了我的工作,但这不仅仅是功课,而是实际上带来了金钱:) – Mike 2010-04-20 21:01:12
当你开始思考模式时,这表明你过度使用它。 – 2010-04-20 21:08:46