装饰者模式
来源:互联网 发布:小甲鱼c语言新版 编辑:程序博客网 时间:2024/06/06 03:17
概念:动态地将责任附加到对象上。(想要扩展功能,提供有别于继承的另一种选择(避免类爆炸))
设计原则:开关-关闭原则(对扩展开放,对修改关闭)
代码:
class base{public: return_type Cal(); void Display();};class A : public base{ A(base ba) { m_ba = ba; } return_type Cal() { // 附加A类功能处,根据情况调用父类 return m_ba.Cal() + A类处理结果 } void Display(); base m_ba;}class B : public base{ B(base ba) { m_ba = ba; } return_type Cal() { // 附加B类功能处,根据情况调用父类 return m_ba.Cal() + B类处理结果 } void Display(); base m_ba;}class C : public base{...}void how_to_used(){ base ba = new base; // 拥有基本功能 ba = new A(ba); // 附加A功能 ba = new C(ba); // 附加C功能,现有A、 C和基本功能}
缺点:
1、多层装饰时,效率低
2、若有对特定组件装饰,应用到一般中会有问题
0 0
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式 DecoratorPattern
- 设计模式 - 装饰者
- 装饰者模式
- 装饰者模式
- 装饰者模式 - 2
- 装饰者模式
- 装饰者模式
- [HDOJ 1247] Hat’s Words [字典树]
- oracle的分析函数 over(Partition by...)
- WPF的Image控件BitmapImage以及Uri的资源占用问题
- 【北师校赛】B 数细菌
- hdu 题目分类
- 装饰者模式
- Problem 9:Special Pythagorean triplet
- ASIHTTPRequest导入
- java webservice 调用
- 【简记】用lxml解析html
- UML状态图
- 如何迅速提升收录增加网站权重?
- Sutherland-Hodgeman 和Cohen—Sutherland算法
- C#图像处理——ColorMatrix简介