装饰者模式
来源:互联网 发布:洞箫f调制作数据图 编辑:程序博客网 时间:2024/06/05 02:31
Component是一个抽象类,它可以被继承实例化为一个全新的被装饰者,
也可以被继承实例化为一个用来装饰的基础组件,即装饰者。
装饰者和被装饰都继承自Component,有着有相同的方法,因为装饰者必须能取代被装饰者。
将装饰者与组件组合,就是加入新的行为。
通常装饰者模式时采用抽象类,但是在Java中可以使用接口,即将Component设计为接口。不过,如果Component原本就是抽象类,就不需要修改。
例如
星巴克中的饮料
饮料是一个对象,它需要被实例化为浓缩或深焙,然后被摩卡、奶泡等对象装饰。
在这里,饮料是Component,浓缩或深焙是被装饰者,摩卡和奶泡是装饰者。
public abstract class Beverage{ String description = "Unknown Beverage"; public String getDescription(){ return description ; } public abstract double cost();}
public class Espresso extends Beverage {public Espresso() {description = "Espresso";}public double cost() {return 1.99;}}
public abstract class CondimentDecorator extends Beverage{public abstract String getDescription();}
public class Mocha extends CondimentDecorate{ Beverage beverage; public Moca(Beverage beverage) { this.beverage = beverage; } public String getDesp() { // TODO Auto-generated method stub return beverage.getDesp()+",Mocha"; } public double cost() { // TODO Auto-generated method stub return .20+beverage.cost(); }}
public class Main {public static void main(String[] args) {Beverage beverage = new Espresso();beverage = new Moca(beverage);System.out.println(beverage.getDesp()+" $"+beverage.cost());}}
0 0
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式 DecoratorPattern
- 设计模式 - 装饰者
- 装饰者模式
- 装饰者模式
- 装饰者模式 - 2
- 装饰者模式
- 装饰者模式
- 剑指offer:二叉树中和为某一值的路径
- 进程、线程与多线程概念详解
- Java Nio 十六、Java NIO Files
- Web前端开发与iOS终端开发的异同
- 总结二
- 装饰者模式
- C++第4次作业
- acm_A strange lift
- CSS3 Media Queries 与Responsive 设计
- java---多线程的并发控制
- Ubuntu 16.04 vim 报错: required vim compiled with +python
- 课程练习二-总结
- 【浅谈git常用命令】
- ZJNU 1710 dfs