装饰者模式
来源:互联网 发布:牛魔王 知乎 编辑:程序博客网 时间:2024/06/08 11:57
对装饰模式的理解:
在装饰模式中的各个角色有:
(1)抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。
(2)具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。
(3)装饰(Decorator)角色:持有一个构件(Component)对象的实例,并实现一个与抽象构件接口一致的接口。
(4)具体装饰(Concrete Decorator)角色:负责给构件对象添加上附加的责任。
public abstract class Beverage {//基类,饮料 String description = "Unknow description"; public String getDescription(){ return description; } public abstract double cost();}
public class Espresso extends Beverage{/组成饮料的一种材料 public Espresso(){ description = "Espresso"; } @Override public double cost() { return 1.99; }}
public class HouseBlend extends Beverage{//组成饮料的一中材料 public HouseBlend(){ description = "HouseBlend"; } @Override public double cost() { return .89; }}
public abstract class CondimentDecorate extends Beverage{ public abstract String getDescription();}
public class Mecha extends CondimentDecorate {//组合几种材料的饮料 Beverage beverage; public Mecha(Beverage b){ this.beverage = b; } @Override public String getDescription() { return beverage.getDescription() + "Mecha"; } @Override public double cost() { return .20 + beverage.cost(); }}
public class CoffeTest {//测试用例 public static void main(String[] args){ Beverage beverage = new HouseBlend(); beverage = new Mecha(beverage); System.out.print(beverage.getDescription() + "$" + beverage.cost()); }}
装饰模式的UML图:
为何非要Decorator这个类?
装饰模式的实例图:
对装饰模式内部运行机制的理解:其实就是一层层包装
0 0
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式 DecoratorPattern
- 设计模式 - 装饰者
- 装饰者模式
- 装饰者模式
- 装饰者模式 - 2
- 装饰者模式
- 装饰者模式
- U-boot第一阶段分析
- 技术团队的情绪与效率
- 电路中的各种地(转)
- UIBezierPath和CGContext类中的方法
- Linux内核编程:从hello world 开始-(3)_run
- 装饰者模式
- kmm
- Hadoop学习<一>--hadoop安装和环境变量设置
- GUI java.awt.Graphics类来画图 注意这里没有new一个Frame却直接launchFrame造了一个Frame
- java ajax 文件上传带滚动条显示
- Java解释Excel数据(jxl.jar包的使用)
- Java中final、finally和finalize的区别(转)
- 简单工厂模式c#
- 迭代器是什么