设计模式(装饰模式)

父类(饮料,价格)
public abstract class Beverage {//饮料
public abstract String getDescription();
public abstract double cost();
}
子类(咖啡的)
public class Coffee extends Beverage{
@Override
public String getDescription() {
// TODO Auto-generated method stub
return “咖啡”;
}
@Override
public double cost() {
// TODO Auto-generated method stub
return 10;
}
}
//子类(装饰类)
public abstract class CondimentDecorator extends Beverage {
private Beverage beverage;
public CondimentDecorator(Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return this.beverage.getDescription();
}
public double cost() {
return this.beverage.cost();
}
}
//子类(牛奶)
public class Milk extends CondimentDecorator {
public Milk(Beverage beverage) {
super(beverage);
// TODO Auto-generated constructor stub
}
public String milk() {
return “牛奶”;
}
public double milkcost() {
return 2;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return super.getDescription()+ “+” + milk();
}
@Override
public double cost() {
// TODO Auto-generated method stub
return super.cost()+milkcost();
}
}
//子类(奶泡)
public class Whip extends CondimentDecorator{
public Whip(Beverage beverage) {
super(beverage);
// TODO Auto-generated constructor stub
}
public String milk() {
return “奶泡”;
}
public double milkcost() {
return 3;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return super.getDescription()+"+"+milk();
}
@Override
public double cost() {
// TODO Auto-generated method stub
return super.cost()+milkcost();
}
}
//测试类
public class Test {
public static void main(String[] args) {
Beverage coffee=new Coffee();
coffee=new Milk(coffee);
coffee=new Whip(coffee);
coffee=new Milk(coffee);
System.out.println(coffee.getDescription()+"$"+coffee.cost());
}
}

猜你喜欢

转载自blog.csdn.net/qq_42904898/article/details/85231739