新版 装饰模式 (参考head first 模式设计) namespaceWindowsFormsApp3.Exercise{//抽象饮料类总类程序所以类都得继承publicabstractclassBeverage{protectedstringdecriptionunknow beverage;publicvirtualstringGetDescription(){returndecription;}publicabstractdoubleCost();}//没有装饰的饮料继承自饮料publicclassHouseBlend:Beverage{publicHouseBlend(){decriptionhouse blend coffee;}publicoverridedoubleCost(){return0.35f;}}//装饰类继承自饮料publicabstractclassBeverageDecorater:Beverage{protectedBeveragebeverage;publicBeverageDecorater(Beveragebeverage){this.beveragebeverage;}}//调料摩卡 继承自装饰类publicclassMocha:BeverageDecorater{publicMocha(Beveragebeverage):base(beverage){}publicoverridedoubleCost(){return0.2beverage.Cost();}publicoverridestringGetDescription(){returnbeverage.GetDescription() mocha;}}//调料大豆 继承自装饰类publicclassSoy:BeverageDecorater{publicSoy(Beveragebeverage):base(beverage){}publicoverridedoubleCost(){return0.3beverage.Cost();}publicoverridestringGetDescription(){returnbeverage.GetDescription() soy;}}}调用HouseBlendhouseBlendnewHouseBlend();//一个没有装饰的饮料的实例单纯的饮料Console.WriteLine(houseBlend.GetDescription());Console.WriteLine(houseBlend.Cost());BeveragemochanewMocha(houseBlend);//用mocha类的实例装饰houseblend的实例mochanewSoy(mocha);//用soy类的实例装饰mocha类的实例Console.WriteLine(mocha.GetDescription());Console.WriteLine(mocha.Cost());输出house blend coffee0.349999994039536house blend coffee mocha soy0.849999994039536