public Client() { Component component = new ConcreateComponent(); component = new ConcreateDecoratorA(component); component = new ConcreateDecoratorB(component); component.Operation(); }
private static void Test1() { // 首先实例化具体对象ConcreateComponent 【具体组合】 ConcreateComponent c = new ConcreateComponent(); // 然后实例化具体装饰类 ConcreteDecoratorA d1 = new ConcreteDecoratorA(); ConcreteDecoratorB d2 = new ConcreteDecoratorB(); // 开始包装 d1.SetComponent(c); d2.SetComponent(d1); d2.Operation(); }
/// <summary> /// (1)需要扩展一个类的功能、或者给一个类添加附加的职责时。 /// (2)需要动态的给一个对象添加功能,这些功能可以再动态的撤销时。 /// (3)需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。 /// (4)当不能采用生成子类的方式进行扩充时。 /// </summary> /// <param name="args"></param> static void Main(string[] args) { IComponent component = new ConcreateComponent("XiaoMing"); ConcreateDecoratorA decoratorA = new ConcreateDecoratorA(); decoratorA.decorator(component); ConcreateDecoratorB decoratorB = new ConcreateDecoratorB(); decoratorB.decorator(decoratorA); decoratorB.Show("test"); //IComponent component = new ConcreateDecoratorA(new ConcreateComponent("XiaoMing")); //ConcreateDecoratorA decoratorA = new ConcreateDecoratorA(); //decoratorA.SetComponent(component); component.Show("decorator demo."); Console.ReadLine(); }
static void Main(string[] args) { //装饰者 ConcreateComponent c = new ConcreateComponent(); ConcreateDecoratorA ca = new ConcreateDecoratorA(); ConcreateDecoratorB cb = new ConcreateDecoratorB(); ca.SetComponent(c); cb.SetComponent(ca); cb.Operation(); Console.WriteLine("----------------------------------\r\n"); Person.Person person = new Person.Person("微软"); Person.BigTrouser bt = new Person.BigTrouser(); Person.TShirts ts = new Person.TShirts(); bt.Decorate(person); ts.Decorate(bt); ts.Show(); Console.Read(); }