Java设计模式之装饰者模式
来源:互联网 发布:it编程 编辑:程序博客网 时间:2024/06/04 18:09
基本概念:
装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者模式提动了比继承更有弹性的替代方案。
可以看下面类图:
从上图可以看出,装饰者模式有以下几个角色:
Component:每个装饰者模式中都有一个父组件,其他的组件均继承此组件。
ConcreteCompent:可以动态增加新的行为,可以有多个。
Decorator:抽象装饰者,将Component组合在其中,具体装饰者共同的接口。
ConcreteDecorator:具体装饰者,继承Decorator,可以增加新的行为。
应用:
这是一个咖啡订单系统,Beverage作为Component,Espresso、HouseBlend作为ConcreteCompent,表示咖啡
的具体种类,但是订单系统结算的时候还要考虑是否加糖,加牛奶等等,将这些作为装饰者。所以
CondimentDecorator作为Decorator,Soy、Moka作为ConcreteDecorator。
Component:
ConcreteCompent:
Decorator:
ConcreteDecorator:
测试类:
可以看到在测试类中,通过计算一杯Espresso或者HouseBlend是否添加了Moka或者Soy来决定一杯咖啡的
价格,这种设计就比把所有情况的咖啡(比如:带soy的Espresso,带Moka的Espresso等等)都设计成
concreteComponent来继承Component要简单很多。
如果还是不能理解装饰者模式,可以参考Java IO:
阅读全文
1 0
- java设计模式之装饰者模式
- Java设计模式之装饰者模式
- java设计模式之装饰者模式
- Java设计模式之装饰者模式
- Java设计模式之装饰者模式
- Java设计模式之装饰者模式
- java设计模式之装饰者模式
- Java设计模式之装饰者模式
- Java设计模式之装饰者模式
- java设计模式之装饰者模式
- java设计模式之------装饰者模式
- Java设计模式之装饰者模式
- java设计模式之装饰者模式
- Java 设计模式之 -- 装饰者模式
- java设计模式之装饰者模式
- Java设计模式之---装饰者模式
- java设计模式之装饰者模式
- java设计模式之装饰者模式
- 0914 数据库设计DAO
- 使用pylon构建应用程序的常见设置(基本是环境设置)
- Java 集合深入理解(13):Stack 栈
- 线程的基本概念,基本状态、状态之间的关系
- xftp上传失败之解决办法
- Java设计模式之装饰者模式
- python学习三个月001
- 浅谈面向对象--《Thinking in Java》读书笔记(一)
- 多线程间通信的方法
- HDU 4035 Maze(概率DP)
- JAVA设计模式之单例模式
- LeetCode.477 Total Hamming Distance
- 二维数组与数组指针
- Redis系列-1.介绍