【发布时间】:2010-04-20 20:55:57
【问题描述】:
Attached 是一个经典的装饰器模式。我的问题是你将如何修改下面的代码,以便你可以将每个配料中的零个或一个包装到比萨饼上
现在我可以吃 Pepporini -> Sausage --> Pepporini --> Pizza 课,总成本高达 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;
}
}
}
【问题讨论】:
-
不,我承认我隐藏了“真正的”应用程序,为了我的工作,但这不仅仅是家庭作业,这实际上带来了金钱:)
-
当你开始以模式思考时,这表明你做得过火了。
标签: c# design-patterns