读书笔记3:Head First设计模式——装饰者模式
来源:互联网 发布:老司机 种子 知乎 编辑:程序博客网 时间:2024/06/07 19:05
设计原则:
类应该对扩展开放,对修改关闭。
装饰者模式:
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的代替方案。
装饰者和被装饰者必须是一样的类型,也就是有共同的超类。
public abstract class Beverage {String description = "Unknown Beverage";int size;public String getDescription() {return description;}public int getSize() {return size;}public abstract double cost();}
public abstract class CondimentDecorator extends Beverage {public abstract String getDescription();}
public class HouseBlend extends Beverage {public HouseBlend() {description = "House Blend Coffee";}@Overridepublic double cost() {return 0.89;}}
public class DarkRoast extends Beverage {public DarkRoast() {description = "Dark Roast Coffee";}@Overridepublic double cost() {return .99;}}
public class Espresso extends Beverage {public Espresso() {description = "Espresso";}@Overridepublic double cost() {return 1.99;}}
public class Mocha extends CondimentDecorator {Beverage beverage;public Mocha(Beverage beverage) {this.beverage = beverage;}@Overridepublic String getDescription() {return beverage.getDescription() + ", Mocha";}@Overridepublic double cost() {return 0.20 + beverage.cost();}}
public class Soy extends CondimentDecorator {Beverage beverage;public Soy(Beverage beverage) {this.beverage = beverage;}public String getDescription() {return beverage.getDescription() + ", Soy";}public double cost() {return .15 + beverage.cost();}}
public class Whip extends CondimentDecorator {Beverage beverage; public Whip(Beverage beverage) {this.beverage = beverage;} public String getDescription() {return beverage.getDescription() + ", Whip";} public double cost() {return .10 + beverage.cost();}}
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());}}
- 《Head First设计模式》读书笔记3——装饰模式
- 读书笔记3:Head First设计模式——装饰者模式
- 【设计模式】《Head First 设计模式》读书笔记——装饰者模式
- 《Head First 设计模式》读书笔记之装饰者模式
- 【Head First设计模式-读书笔记】装饰者模式
- 读书笔记---Head First 设计模式--- 装饰者模式
- Head First Java 设计模式——装饰者模式
- Head First 设计模式学习——装饰者模式
- Head First 设计模式—装饰者模式
- 《Head First 设计模式》模式3——装饰者模式
- Head First设计模式-装饰者模式
- 《Head First 设计模式》装饰者模式
- Head First 设计模式--装饰者模式
- Head First-设计模式:装饰者模式
- 《Head First设计模式》读书笔记之装饰模式
- Head First 设计模式(3)- 装饰者模式 笔记
- Head First 设计模式(3):装饰者模式
- Head First 设计模式 —— 装饰器模式
- Nginx 反向代理+Varnish 技术
- Fedora中如何创建文件夹和创建文件
- JDBC为什么要使用PreparedStatement而不是Statement
- linux踢出远程登录用户命令
- 关于获取gridview里点击时获取对应的id号
- 读书笔记3:Head First设计模式——装饰者模式
- HDOJ 3729 - I'm Telling the Truth 水二分图最大匹配
- lsof
- 专家看好甲骨文-微软云计算合作计划
- 如何获取ApplicationContext
- PHP小镇微信平台开通,欢迎大家关注!
- 传微软将于7月1日宣布实施大规模重组
- 常量指针 和 指针常量
- sqlserver 读取类