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(); } }