设计模式(装饰模式)

父类(饮料,价格)
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());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值