111,126
社区成员
发帖
与我相关
我的任务
分享using System;
using System.Collections.Generic;
using System.Text;
namespace DesignModel
{
class DecoratorPattern
{
public void TestDecorator()
{
Beverage be = new Espresso();
be = new Mocha(be);
be = new Mocha(be);
be = new Whip(be);
Console.WriteLine(be.getDescription()+" $"+be.cost());
}
}
//****************************************************
public abstract class Beverage
{
protected string description = "Unknown Beverage";
public string getDescription()
{
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 Mocha : CondimentDecorator
{
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.20;
}
}
public class Whip : CondimentDecorator
{
Beverage beverage;
public Whip(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ", Whip";
}
public override double cost()
{
return beverage.cost() + 0.70;
}
}
}