奶茶店有很多饮料可以抽象成Drink(名字,价格),然后每个饮料分别去实现这个抽象类,我们可以自己去加配料,比如布丁,蓝莓。建立一个新的抽象类去继承Drink并声明一个Drink对象,然后通过新的抽象类decorater的实现类去装饰Drink,为Drink添加新的描述。
代码实现:public abstract class Drink { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract double getPrince(); }
public class Coffee extends Drink{ Coffee(){ setName("咖啡"); } @Override public double getPrince() { return 8; } }
public class Tea extends Drink{ Tea(){ setName("茶"); } @Override public double getPrince() { return 5; } }
public abstract class Condiment extends Drink{ private String name; }
public class Pudding extends Condiment{ Drink drink ; public Pudding(Drink drink) { this.drink = drink; } @Override public double getPrince() { return 1+drink.getPrince(); } @Override public String getName() { return "布丁"+drink.getName(); } }
public class BlueBerry extends Condiment{ Drink drink ; public BlueBerry(Drink drink) { this.drink = drink; } @Override public String getName() { return "蓝莓"+drink.getName(); } @Override public double getPrince() { return 1.5+drink.getPrince(); } }
public class client { public static void main(String[] args) { Drink s = new Coffee(); s= new BlueBerry(s); s= new Pudding(s); System.out.println("你点的是"+s.getName()+" 价格是"+s.getPrince()); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)