装饰模式
2011-11-12 11:58
309 查看
class Program
{
static void Main(string[] args)
{
Beverage beverage = new Espresso();
Console.WriteLine(beverage.getDesciption() + "$" + beverage.cost());
Beverage beverage2 = new Espresso();
Beverage beverage3 = new Mocha(beverage2);
Beverage beverage4 = new Mocha(beverage3);
beverage3 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
Console.WriteLine(beverage4.getDesciption() + "$" + beverage4.cost());
}
}
public abstract class Beverage
{
public string description = "Unknown Beverage";
public String getDesciption()
{
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator:Beverage
{
public abstract string getDescription();
}
public class Espresso : Beverage
{
public Espresso()
{
description = "Espresso";
}
public override double cost()
{
return 1.99;
}
}
public class HouseBlend : Beverage
{
public HouseBlend()
{
description = "House Blend Coffee";
}
public override double cost()
{
return 0.89;
}
}
public class Mocha : CondimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override String getDescription()
{
return beverage.getDesciption() + ",Mocha";
}
public override double cost()
{
return 0.20 + beverage.cost();
}
}
{
static void Main(string[] args)
{
Beverage beverage = new Espresso();
Console.WriteLine(beverage.getDesciption() + "$" + beverage.cost());
Beverage beverage2 = new Espresso();
Beverage beverage3 = new Mocha(beverage2);
Beverage beverage4 = new Mocha(beverage3);
beverage3 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
Console.WriteLine(beverage4.getDesciption() + "$" + beverage4.cost());
}
}
public abstract class Beverage
{
public string description = "Unknown Beverage";
public String getDesciption()
{
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator:Beverage
{
public abstract string getDescription();
}
public class Espresso : Beverage
{
public Espresso()
{
description = "Espresso";
}
public override double cost()
{
return 1.99;
}
}
public class HouseBlend : Beverage
{
public HouseBlend()
{
description = "House Blend Coffee";
}
public override double cost()
{
return 0.89;
}
}
public class Mocha : CondimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public override String getDescription()
{
return beverage.getDesciption() + ",Mocha";
}
public override double cost()
{
return 0.20 + beverage.cost();
}
}
相关文章推荐
- 设计模式2--装饰模式(the decorator design pattern)
- 装饰模式
- java设计模式_装饰模式
- 详解KOA2如何手写中间件(装饰器模式)
- 装饰模式与代理模式的区别
- Java装饰设计模式的例子
- 详解之装饰模式
- 装饰设计模式(Decorator)-IO
- 《JAVA与模式》之装饰模式
- 设计模式之桥接模式和装饰模式的小论
- 装饰模式 Decorator
- C++设计模式8--装饰模式(Decorator)--动态的增减功能
- Java中IO流缓冲区的装饰模式的体现 推荐
- 设计模式之装饰器模式
- java模式之装饰模式
- 装饰模式
- 装饰设计模式
- 设计模式之装饰模式
- PHP 设计模式之装饰器模式
- 结构型模式--装饰模式