java _io_装饰器涉及模式
//处理流:
/模拟咖啡
1、抽象组件:需要装饰的抽象对象(接口或抽象父类)
2、具体组件:需要装饰的对象
3、抽象装饰类:包含了对抽象组件的引用及装饰着共有的方法
4、具体装饰类:被装饰的对象
/
public class hel<E>{public static void main(String[]args){ Drink coffee =new Coffee(); Drink suger =new Suger(coffee); //装饰 System.out.println(suger.info()+"-->"+suger.cost()); Drink milk =new Milk(coffee); //装饰 System.out.println(milk.info()+"-->"+milk.cost()); milk=new Milk(suger); //装饰 System.out.println(milk.info()+"-->"+milk.cost());}}//抽象组件interface Drink{ double cost(); String info();}//具体组件class Coffee implements Drink{ private String name="原味咖啡";public double cost(){ return 10;}public String info(){ return name;}}//抽象装饰类abstract class Decorate implements Drink{ //对抽象组件的引用 private Drink drink; public Decorate(Drink drink) { this.drink=drink; } public double cost() { return this.drink.cost(); } public String info() { return this.drink.info(); }}//具体装饰类class Milk extends Decorate{public Milk(Drink drink) { super(drink); // TODO Auto-generated constructor stub}public double cost(){ return super.cost()*4;}public String info() { return super.info()+"Milk";}}class Suger extends Decorate{public Suger(Drink drink) { super(drink); // TODO Auto-generated constructor stub}public double cost(){ return super.cost()*2;}public String info() { return super.info()+"Suger";}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。