.NET设计模式(10):装饰模式(Decorator Pattern)
2024-10-19 03:28:28
装饰模式(Decorator Pattern)
——.NET设计模式系列之十
年月..在....对于..由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行。但是,在另一方面,使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难,特别是这些对象看上去都很相像。
适用性
在以下情况下应当使用装饰模式:
1.需要扩展一个类的功能,或给一个类增加附加责任。
2.需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
3.需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。
总结
Decorator模式采用对象组合而非继承的手法,实现了在运行时动态的扩展对象功能的能力,而且可以根据需要扩展多个功能,避免了单独使用继承带来的“灵活性差”和“多子类衍生问题”。同时它很好地符合面向对象设计原则中“优先使用对象组合而非继承”和“开放-封闭”原则。
参考资料
阎宏,《Java与模式》,电子工业出版社
James W. Cooper,《C#设计模式》,电子工业出版社
Alan Shalloway James R. Trott,《Design Patterns Explained》,中国电力出版社
MSDN WebCast 《C#面向对象设计模式纵横谈(10) Decorator装饰模式(结构型模式)》
作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
最新文章
- .NET框架解决的问题
- 关于Spring中配置LocalSessionFactoryBean来生成SessionFactory
- 【整理贴】DBA-常用到的动态视图分析语句
- lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合
- linux内核书籍
- C++11多线程教学(二)
- javascript正则表达式简述
- hibernate懒加载导致jackjson解析json时StackOverFlow
- TCP的ACK确认系列 — 发送状态转换机
- 机器学习之十一问支持向量机(SVM)
- mysql执行sql脚本文件
- HDU 1159:Common Subsequence(LCS模板)
- 在Java中,以下关于方法重载和方法重写描述正确的是?
- @Secured()、 @PreAuthorize() 、 @RolesAllowed()
- @Autowired和@Resource装配
- 【codeforces-482div2-C】Kuro and Walking Route(DFS)
- iOS开发中如遇到频繁的Http请求,取消之前已经发送的Http
- Swift培训
- PL/SQL规范、块、过程、函数、包、触发器
- MyBatis02 MyBatis基础知识之Mapper映射器