Head First 设计模式----DecoratorPattern
2015-01-22 11:27
267 查看
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public abstract class Beverage { public String description = "Unknow beverage"; public virtual String getDescription() { return description; } public abstract Double cost(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public abstract class CondimentDecorator:Beverage { public abstract String getDescription(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class DarkRoast:Beverage { public DarkRoast() { description = "DarkRoast Coffe"; } public override Double cost() { return 0.99; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public abstract class Decaf:Beverage { public Decaf() { description = "Decaf Coffee"; } public override Double cost() { return 1.05; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class Espresso:Beverage { public Espresso() { description = "Espresso Coffee"; } public override Double cost() { return 1.99; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class HouseBlend:Beverage { public HouseBlend() { description = "House Blend Coffee"; } public override Double cost() { return 0.89; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class Milk :Beverage { Beverage beverage; public Milk(Beverage beverage) { this.beverage = beverage; } public override String getDescription() { return beverage.getDescription() + ",Milk"; } public override Double cost() { return 0.10 + beverage.cost(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class Mocha : Beverage { Beverage beverage; public Mocha(Beverage beverage) { this.beverage = beverage; } public override String getDescription() { return beverage.getDescription() + ",Mocha"; } public override Double cost() { return 0.20 + beverage.cost(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class Soy : Beverage { Beverage beverage; public Soy(Beverage beverage) { this.beverage = beverage; } public override String getDescription() { return beverage.getDescription() + ",Soy"; } public override Double cost() { return 0.15+beverage.cost(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HeadFirst.Decorator { public class Whip : Beverage { Beverage beverage; public Whip(Beverage beverage){ this.beverage = beverage; } public override String getDescription() { return this.beverage.getDescription() + ",Whip"; } public override Double cost() { return 0.10 + beverage.cost(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeadFirst.Decorator; namespace HeadFirst { class Program { static void Main(string[] args) { //Decorator装饰者模式 Beverage beverage = new Espresso(); Console.Write(beverage.getDescription() + ":" + beverage.cost()); Console.ReadLine(); } } }
相关文章推荐
- Head First 设计模式——装饰者模式(Decorator Pattern)
- Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现
- Head First 设计模式——装饰器(Decorator Pattern)——Python实现
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- .NET设计模式(10):装饰模式(Decorator Pattern)
- 设计模式学习笔记(2)——装饰模式(Decorator Pattern)
- 设计模式笔记之装饰者模式(Decorator Pattern)
- 设计模式[6] Decorator Pattern 装饰模式
- Net设计模式实例之装饰者模式(Decorator Pattern)
- Head First 设计模式——策略模式(Strategy Pattern)——Python实现
- C#设计模式——装饰者模式(Decorator Pattern)
- .NET设计模式(10):装饰模式(Decorator Pattern)
- 模式人生-从生活中的点点滴滴认识设计模式1-装饰器模式(Decorator Pattern)
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- Net设计模式实例之装饰者模式(Decorator Pattern)(2)
- NET设计模式之一:装饰模式(Decorator Pattern)
- 设计模式学习笔记十五:装饰模式(Decorator Pattern)
- 我读设计模式之装饰模式(Decorator Pattern)
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(3)
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(2)