附加是一個經典的裝飾模式。我的問題是你將如何修改下面的代碼,以便你可以包裝零或一個頂部的比薩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