Design patterns IV : Decorator/Wrapper Pattern
2013-06-08 01:55
288 查看
/*
Author: Jiangong SUN
*/
Decorators provide a flexible alternative to subclassing for extending functionality.
reference:
http://en.wikipedia.org/wiki/Decorator_pattern http://geekswithblogs.net/amaniar/archive/2012/02/10/a-simple-implementation-of-the-decorator-design-pattern-using-c-sharp.aspx http://sourcemaking.com/design_patterns/decorator/c%2523 http://www.dofactory.com/Patterns/PatternDecorator.aspx
Author: Jiangong SUN
*/
Decorators provide a flexible alternative to subclassing for extending functionality.
public class DecoratorPattern { /* * decorator和wrapper是一个设计模式 * 用途:用来扩展已有类的功能 * 实现步骤: * 先定义一个interface,然后建立一个类继承这个接口,并实现接口里的方法 * 建立一个包装类继承同一个接口,并在这个包装类的构造器中使用接口的实例做参数。 * 建立实际包装类继承包装类,重写接口定义的方法,并可以创建自己特有的方法。 */ public interface IComponent { void Operation(); } public class ConcreteComponent : IComponent { public void Operation() { Console.WriteLine("ConcreteComponent operation"); } } public class Decorator : IComponent { private readonly IComponent _decoratedComponent; public Decorator(IComponent iComponent) { _decoratedComponent = iComponent; } public void Operation() { _decoratedComponent.Operation(); } } public class ConcreteDecoratorA : Decorator { private string _addState; public ConcreteDecoratorA(Decorator decorator) : base(decorator) { } public new void Operation() { base.Operation(); _addState = "New State"; Console.WriteLine("ConcreteDecoratorA.Operation"); } public void CustomOperation() { Console.WriteLine("ConcreteDecoratorA custom Operation"); } } public static void Main() { ConcreteComponent concreteComponent = new ConcreteComponent(); concreteComponent.Operation(); Decorator decorator = new Decorator(concreteComponent); ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA(decorator); concreteDecoratorA.Operation(); concreteDecoratorA.CustomOperation(); Console.ReadKey(); } }
reference:
http://en.wikipedia.org/wiki/Decorator_pattern http://geekswithblogs.net/amaniar/archive/2012/02/10/a-simple-implementation-of-the-decorator-design-pattern-using-c-sharp.aspx http://sourcemaking.com/design_patterns/decorator/c%2523 http://www.dofactory.com/Patterns/PatternDecorator.aspx
相关文章推荐
- OOP Design (Head First Design Patterns) 学习笔记--04 The decorator pattern
- 《Head First Design Patterns》笔记三:装饰者模式(Decorator Pattern)
- Learning JavaScript Design Patterns The Singleton Pattern
- Core Design Patterns(1) Decorator 装饰模式
- Iterator Pattern(GoF-Behavioral Design Patterns)
- C# Design Patterns (3) - Decorator
- Learning JavaScript Design Patterns The Observer Pattern
- 学习Head First Design Pattern——翻译Chapter 3:The Decorator Pattern
- Decorator(Chapter 16 of Pro Objective-C Design Patterns for iOS)
- Design Patterns - Decorator - Example 2
- Design Patterns Uncovered: The Facade Pattern
- 《Head First Design Patterns》笔记四:工厂模式(Factory Pattern)
- 《Head First Design Patterns》笔记九:模版模式(Template Method Pattern)
- Design Patterns Uncovered: The Chain Of Responsibility Pattern
- Head First Design Patterns 阅读笔记之八: the Template Method Pattern
- [译] The Adapter Pattern 适配器模式 from Ch7 of《Design Patterns Explained》
- 《Head First Design Patterns》笔记十:迭代器模式(Iterator Pattern)
- head first design pattern -Decorator
- Decorator Design Pattern
- Structural Patterns Part 4/7: Decorator Pattern