Beverage.java
publicabstractclass Beverage { "Unknown Berverage"; publicgetDescription(){ return description; } publicabstractdoublecost();}
Condimentdecorator.java
publicabstractclass CondimentDecorator extends Beverage { publicabstractgetDescription();}
Espresso.java
publicclass Espresso extends Beverage { publicEspresso() { "Espresso"; } @Override publicdoublecost() { return1.99; }}
Houseblend.java
publicclass HouseBlend extends Beverage { publicHouseBlend() { "House Blend Coffee"; } @Override publicdoublecost() { return.89; }}
Mocha.java
Public class Mocha extends condimentdecorator {Beverage beverage; Public Mocha(Beverage beverage) { This. beverage = Beverage; }@Override PublicStringgetdescription() {returnBeverage.getdescription () +", Mocha"; }@Override Public Double Cost() {return .+ Beverage.cost (); }}
Starbuzzcoffee.java
Public classStarbuzzcoffee { Public Static void Main(string[] args) {Beverage Beverage =NewEspresso (); System. out. println (Beverage.getdescription () +"$"+ Beverage.cost ()); Beverage Beverage2 =NewEspresso (); Beverage2 =NewMocha (Beverage2); Beverage2 =NewMocha (Beverage2); System. out. println (Beverage2.getdescription () +"$"+ Beverage2.cost ()); Beverage Beverage3 =NewHouseblend (); Beverage3 =NewMocha (Beverage3); System. out. println (Beverage3.getdescription () +"$"+ Beverage3.cost ()); }}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Decorative Mode of design pattern