裝飾者模式:動態地給一個對象添加一些額外的職責,就增長功能來講,Decorator模式比生成子類更爲靈活。ide
Decorator模式的工做原理是:能夠建立始於Decorator對象(負責新的功能的對象)終於原對象的一個對象「鏈」。學習
適用性this
在如下狀況下能夠使用 Decorator 模式:設計
結構blog
例:繼承
class Program { static void Main(string[] args) { Car car=new Car(); car.Operation(); ComponentA componentA = new ComponentA(car); componentA.Operation(); Console.WriteLine("\r\n"); Truck truck = new Truck(); truck.Operation(); ComponentB componentB=new ComponentB(truck); componentB.Operation(); Console.ReadKey(); } public class Car : Component { public override void Operation() { Console.WriteLine("我是普通的轎車,速度90km/h!\r\n"); } } public class Truck:Component { public override void Operation() { Console.WriteLine("我是普通的卡車,速度50km/h!\r\n"); } } public abstract class Component { public abstract void Operation(); } public class ComponentA : Component { private Component _component; public ComponentA(Component component) { this._component = component; } public override void Operation() { this._component.Operation(); AddNewEngine(); Console.WriteLine("增長了液氮推動器,速度狂飆到200km/h!\r\n"); } public void AddNewEngine() { Console.Write("增長液氮推動器!\r\n"); } } public class ComponentB:Component { private Component _component; public ComponentB(Component component) { _component = component; } public override void Operation() { _component.Operation(); AddNewEngine(); Console.WriteLine("增長了火箭推動器,速度狂飆到300km/h!\r\n"); } public void AddNewEngine() { Console.WriteLine("增長火箭推動器!\r\n"); } } }
運行結果:string