设计模式-装饰者模式

设计模式-装饰者模式

类图:



public abstract class Beverage
{
String description = "Unknown Beverage";
public String getDescription()
{
return description;
}
public abstract double cost();
}


public abstract class CondimentDecorator extends Beverage
{
public abstract String  getDescription();
}



饮料:

public class Espresso extends Beverage
{
public Espresso()
{
description = "Espresso";
}
        public double cost()
{
return 1.99;
}
}


public class HouseBlend extends Beverage
{
public HouseBlend()
{
description = "House Blend Coffee";
}
        public double cost()
{
return 0.89;
}
}


DarkRoast 和 Decaf一样

调料:

public class Mocha extends CondimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage)
{
this.beverage = beverage;
}
public String getDescription()
{
return beverage.getDescription() + ",Mocha";
}
public double cost()
{
return .20 + beverage.cost();
}
}


Soy 和 Whip调料一样


供应咖啡:

public class StarbuzzCoffee
{
public static void main(String args[])
{
Beverage beverage = new Espresso();
System.out.println(beverage.getDescription() + "$" + beverage.cost());
Beverage beverage2 = new DarkRoast();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2);
System.out.println(beverage2.getDescription() + "$" + beverage2.cost());
Beverage beverage3 = new HouseBlend();
beverage3 = new Soy(beverage3);
beverage3 = new Mocha(beverage3);
beverage3 = new Whip(beverage3);
System.out.println(beverage3.getDescription() + "$" + beverage3.cost());
} 
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值