public interface Beverage {
public double cost();
}
public class HouseBlend implements Beverage{
@Override
public double cost() {
return 1;
}
}
public class DarkRoast implements Beverage{
@Override
public double cost() {
return 1;
}
}
public abstract class CondimentDecorator implements Beverage{
protected Beverage beverage;
}
public class Mocha extends CondimentDecorator {
public Mocha(Beverage beverage) {
this.beverage = beverage;
}
@Override
public double cost() {
return 1 + beverage.cost();
}
}
public class Milk extends CondimentDecorator {
public Milk(Beverage beverage) {
this.beverage = beverage;
}
@Override
public double cost() {
return 1 + beverage.cost();
}
}
public class StartbuzzCoffee {
public static void main(String[] args) {
Beverage beverage = new HouseBlend();
beverage = new Mocha(beverage);
beverage = new Milk(beverage);
System.out.println(beverage.cost());
}
}
装饰(decorate)模式
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 桥接模式 要实现多个有相同的类的操作,他们又有各自的控制单元,如车控钥匙控制车辆的上锁、解锁。如果每种钥匙都对应每...
- 定义:装饰者模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。他是通过创建一个包装对象,也...
- 1. 装饰者模式 举个栗子,假如在一家饮料店中有两种饮料,分别是奶茶和咖啡,相对的有三种调料,蜂蜜、块糖和摩卡,这...
- AOP在职责模式中也有使用,初学设计模式过程中,AOP是性价比最高的,在实际开发中的作用也很重要,学习AOP你可以...
- 欢迎访问我的博客:http://wangnan.tech 装饰者模式 定义 动态地将责任附加到对象上,想要扩展功能...