public abstract class Beverage
{
public string description;
public string getDescription()
{
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator:Beverage
{
public abstract string getDescription();
}
public class DarkRoast:Beverage
{
public DarkRoast()
{
description = "DarkRoast";
}
public override double cost()
{
return 2.0;
}
}
public class Milk:CondimentDecorator
{
private Beverage beverage;
public Milk(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Milk";
}
public override double cost()
{
return beverage.cost() + 0.3;
}
}
public class Mocha:CondimentDecorator
{
private Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Mocha";
}
public override double cost()
{
return beverage.cost() + 0.2;
}
}
class Program
{
static void Main(string[] args)
{
Beverage beverage = new DarkRoast();
Mocha mocha=new Mocha(beverage);
Milk milk=new Milk(mocha);
Console.WriteLine(milk.getDescription() + "$" + milk.cost());
Console.ReadKey();
}
}
正确的结果应该为DarkRoast,Milk,Mocha $2.5大神求助装饰模式
{
public string description;
public string getDescription()
{
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator:Beverage
{
public abstract string getDescription();
}
public class DarkRoast:Beverage
{
public DarkRoast()
{
description = "DarkRoast";
}
public override double cost()
{
return 2.0;
}
}
public class Milk:CondimentDecorator
{
private Beverage beverage;
public Milk(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Milk";
}
public override double cost()
{
return beverage.cost() + 0.3;
}
}
public class Mocha:CondimentDecorator
{
private Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Mocha";
}
public override double cost()
{
return beverage.cost() + 0.2;
}
}
class Program
{
static void Main(string[] args)
{
Beverage beverage = new DarkRoast();
Mocha mocha=new Mocha(beverage);
Milk milk=new Milk(mocha);
Console.WriteLine(milk.getDescription() + "$" + milk.cost());
Console.ReadKey();
}
}
正确的结果应该为DarkRoast,Milk,Mocha $2.5大神求助装饰模式
解决方案 »
- 问个WebService调试的问题
- [请教]如何让WPF实现进程间通信的接收端?
- C#写了不少的正则表达式提取网页函数,现在要转到vb6上用,有什么好的办法吗?
- C# winform datagridview 列标题列能承载控件吗
- 控制台程序窗口关闭时间那个方法是什么来着?
- 求教为什么不能实现计时器的功能
- 我是个新手。请问怎样才能学好.NET技术。。
- 界面解决方案
- 小弟第一天学习C#,有些菜鸟问题问大家,顶者有分。
- 在datagrid中直接将删除按钮列的text属性改为"<div id=de onclick="javascript:return confirm('是否删除...');">删除</div>"为什么预法
- DevExpress GridView导出Excel,没有内容的区域不显示网格线
- 新手急问WebService端口名和方法名,在线等
{
public string description;
public virtual string getDescription()
{
return description;
}
public abstract double cost();
}
public class DarkRoast : Beverage
{
public DarkRoast()
{
description = "DarkRoast";
}
public override double cost()
{
return 2.0;
}
}
public class Milk : Beverage
{
private Beverage beverage;
public Milk(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Milk";
}
public override double cost()
{
return beverage.cost() + 0.3;
}
}
public class Mocha : Beverage
{
private Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ",Mocha";
}
public override double cost()
{
return beverage.cost() + 0.2;
}
}
class Program
{
static void Main(string[] args)
{
Beverage beverage = new DarkRoast();
Mocha mocha = new Mocha(beverage);
Milk milk = new Milk(mocha);
Console.WriteLine(milk.getDescription() + "$" + milk.cost());
Console.ReadKey();
} }
这样就行了呀为什么要加一个抽象方法
public abstract class CondimentDecorator:Beverage
{
public abstract string getDescription();
}