《设计模式之禅》笔记12 -- 装饰模式
来源:互联网 发布:.cx域名行情 编辑:程序博客网 时间:2024/05/23 23:49
定义:动态的给一个对象添加额外的职责。
装饰模式是一种特殊的代理模式,跟责任链模式也有相似之处。
一、装饰模式的四个角色
1. 抽象构建:定义原始对象,接口或抽象类。例如成绩单。
2. 具体构建:最核心、最原始、最基本的接口或抽象类的实现,要装饰的对象。
3. 装饰角色:一般是抽象类,实现接口或抽象方法,它里面有一个私有变量指向抽象构建。
4. 具体装饰角色
二、装饰模式的优点
1. 装饰类和被装饰类可以独立发展而不会相互耦合。抽象构建无需知道装饰角色的存在,装饰角色也不需要知道具体构建。
2. 装饰模式是继承关系的一种替代方案。不管装饰角色实现多少层,最终返回的都是抽象构建。
3. 装饰模式可以动态地扩展一个实现类的功能。
三、装饰模式的缺点
多层装饰比较复杂,尽量要减少装饰的个数,降低系统的复杂度。
四、装饰模式的使用场景
1. 需要扩展一个类的功能,或者给一个类增加附加功能
2. 需要动态的给一个类增加附加的功能,并且这些功能可以动态的组合
3. 需要为一批的兄弟类进行改装或加装功能
五、最佳实践
装饰模式是对继承的有力补充,并且扩展性非常好。例如有三个类:Father、Son、GrandSon,当需要扩展Son时,就可以通过新增SonDecorator来完成。
装饰模式是一种特殊的代理模式,跟责任链模式也有相似之处。
一、装饰模式的四个角色
1. 抽象构建:定义原始对象,接口或抽象类。例如成绩单。
2. 具体构建:最核心、最原始、最基本的接口或抽象类的实现,要装饰的对象。
3. 装饰角色:一般是抽象类,实现接口或抽象方法,它里面有一个私有变量指向抽象构建。
4. 具体装饰角色
二、装饰模式的优点
1. 装饰类和被装饰类可以独立发展而不会相互耦合。抽象构建无需知道装饰角色的存在,装饰角色也不需要知道具体构建。
2. 装饰模式是继承关系的一种替代方案。不管装饰角色实现多少层,最终返回的都是抽象构建。
3. 装饰模式可以动态地扩展一个实现类的功能。
三、装饰模式的缺点
多层装饰比较复杂,尽量要减少装饰的个数,降低系统的复杂度。
四、装饰模式的使用场景
1. 需要扩展一个类的功能,或者给一个类增加附加功能
2. 需要动态的给一个类增加附加的功能,并且这些功能可以动态的组合
3. 需要为一批的兄弟类进行改装或加装功能
五、最佳实践
装饰模式是对继承的有力补充,并且扩展性非常好。例如有三个类:Father、Son、GrandSon,当需要扩展Son时,就可以通过新增SonDecorator来完成。
0 0
- 设计模式之禅笔记-装饰模式
- 《设计模式之禅》笔记12 -- 装饰模式
- Java设计模式笔记之装饰模式
- 设计模式之装饰模式(笔记)
- java笔记--设计模式之装饰模式
- 设计模式学习笔记之装饰模式
- 设计模式之装饰者模式-笔记
- 设计模式之装饰者模式12
- 设计模式笔记--装饰模式
- 设计模式笔记:装饰模式
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 四舍五入函数
- [leetcode 168] Excel Sheet Column Title
- redis 源码学习(复制 Replication)
- MES(制造执行系统)如何进行高速实时数据采集
- 图片聚焦简介效果
- 《设计模式之禅》笔记12 -- 装饰模式
- 学习笔记—java中的内存分配
- 用AFNetworking上传图片
- POJ 3615 Cow Hurdles (Floyd算法)
- LeetCode--Valid Palindrome
- HTML常用标签及其全称
- 造梦师的梦想是什么样的?
- Android Inflate方法
- 林业技校进行等级培训的方法