装饰器与子类化
2015-10-24 15:30
204 查看
WB
Decorator装饰器模式
Intent意图:Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 为一个对象动态地附加额外的职责。除了子类化这个方案以外,装饰器模式为扩展代码功能提供了另一个灵活的备选方案。
STST
子类化是首选
如果子类化会导致类的数量急剧上升,那就采用这个模式,很管用的一个模式
因为扩展功能,最自然的方式是子类华,没有有力的说服力的前提下,设计应该采用最自然的方式,这是我的理解
MB
如果子类化会导致类的数量急剧上升,那换成装饰器,不也会造成装饰器类数量急剧上升吗
STST
装饰器的数量上升是线性的
而子类话可能是积数的
MB
哦?
STST
比如:
苹果 -〉 红苹果,白苹果,大苹果,小苹果
以及 -〉 红大苹果,红小苹果,白大苹果,白小苹果
装饰的话:只需要红,白,大,小4种装饰
子类话的:需要8种子类才能完成
STST
这只是颜色和大小上分类,如果再加上[好坏]分类的话
装饰需要:红,白,大,小,好,坏 6种装饰器,线性增长
而子类话的话就多了,级数增长
STST
装饰的一个目的就是为了控制类数量的增长速度,了解一点算法复杂度的情况下,线性增长和级数增长可不是一点点的差别
相关文章推荐
- uva 10790
- eclipse启动tomcat无法访问
- 洛谷1341 无序字母对
- iOS 实现SOAP协议
- android调用web service(cxf)实例
- 一看就会Android之列表视图组件ListView结合Adapter的使用及监听
- 加载动态图片
- HorizontalScrollView
- 使用读写锁实现同步数据访问
- apicloud代码压缩和全局加密
- Cocoa Touch框架浅析
- c#换ip代理源码
- 网络流_Dinic
- JAVA泛型详解2 转载
- searchView黑框问题--如何不显示黑框
- 冗余字段
- 如何在Mac上面进行AndroidApk反编译
- 杭电1098--f(x)=5*x^13+13*x^5+k*a*x
- 一看就会Android之网格视图GridView的使用及监听
- 从相册获取图片