【发布时间】:2014-03-03 14:04:17
【问题描述】:
我有一些如下所示的 C# 代码,我想在添加后删除装饰对象,例如我有一杯牛奶和糖加饼干的茶,我想从 Order 类中删除糖,如何使用装饰设计模式:
public abstract class Order
{
private int _Cost = 0;
private string _Description = "";
public virtual int GetCost()
{
return _Cost;
}
public virtual string GetDescription()
{
return _Description;
}
}
public class Coffee : Order
{
int _Cost = 3000;
string _Description = "Coffee";
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public class Tea : Order
{
int _Cost = 2000;
string _Description = "Tea";
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public abstract class Options : Order
{
int _Cost = 0;
string _Description = "No Option";
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public class Honey : Order
{
int _Cost = 800;
string _Description = "Honey";
public Honey(Order order)
{
_Cost = _Cost + order.GetCost();
_Description = order.GetDescription() + " And " + _Description;
}
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public class Biscuit : Order
{
int _Cost = 400;
string _Description = "Biscuit";
public Biscuit(Order order)
{
_Cost = _Cost + order.GetCost();
_Description = order.GetDescription() + " And " + _Description;
}
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public class Sugar : Order
{
int _Cost = 300;
string _Description = "Sugar";
public Sugar(Order order)
{
_Cost = _Cost + order.GetCost();
_Description = order.GetDescription() + " And " + _Description;
}
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
public class Milk : Order
{
int _Cost = 600;
string _Description = "Milk";
public Milk(Order order)
{
_Cost = _Cost + order.GetCost();
_Description = order.GetDescription() + " And " + _Description;
}
public override int GetCost()
{
return _Cost;
}
public override string GetDescription()
{
return _Description;
}
}
如果您尽快回复我,我将不胜感激......
【问题讨论】:
标签: c# design-patterns decorator