解读设计模式----装饰模式(Decorator Pattern)
2008-04-23 00:54
661 查看
装饰模式(Decorator)也叫包装器模式(Wrapper)。以“装饰”的含义生动形象地描绘了“动态地给一个对象添加一些额外的职责”的意图。GOF在《设计模式》一书中给出的定义为:动态地给一个对象添加一些额外的职责。装饰模式充分利用了继承和聚合的优势,创造出无与论比的设计美学。就增加功能来说,Decorator模式相比生成子类更为灵活。
UML图:
namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2
Pen类的设计:
1namespace DesignPattern.Decorator
2
BoldPen类的设计:
1namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2
四、完善Decorator的设计
此部分我就不多说了,代码也已经在上面展示出。示例运行结果:
五、Decorator模式的要点
通过采用组合,而非继承手法,Decorator模式实现了在运行时动态地扩展对象功能的行为,而且可以根据需要扩展多个功能,避免了单独使用继承所带来“灵活性差”和“类爆炸”等问题。把不同的职责封装在不同的职责类的私有方法或属性中,这样对内开放,对外封闭。符合面向对象的“单一职责”和“开放--封闭”原则;同时也很好的符合面向对象设计原则中的“优先使用对象组合而非继承”。
六、本文参考资料
张逸 《软件设计精要与模式》 电子工业出版社
MSDN WebCast 《C#面向对象设计模式纵横谈(10) Decorator装饰模式(结构型模式)》
----------------------------------------------------------------------------------------------------------
UML图:
namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2
Pen类的设计:
1namespace DesignPattern.Decorator
2
BoldPen类的设计:
1namespace DesignPattern.Decorator
2namespace DesignPattern.Decorator
2
四、完善Decorator的设计
此部分我就不多说了,代码也已经在上面展示出。示例运行结果:
五、Decorator模式的要点
通过采用组合,而非继承手法,Decorator模式实现了在运行时动态地扩展对象功能的行为,而且可以根据需要扩展多个功能,避免了单独使用继承所带来“灵活性差”和“类爆炸”等问题。把不同的职责封装在不同的职责类的私有方法或属性中,这样对内开放,对外封闭。符合面向对象的“单一职责”和“开放--封闭”原则;同时也很好的符合面向对象设计原则中的“优先使用对象组合而非继承”。
六、本文参考资料
张逸 《软件设计精要与模式》 电子工业出版社
MSDN WebCast 《C#面向对象设计模式纵横谈(10) Decorator装饰模式(结构型模式)》
----------------------------------------------------------------------------------------------------------
相关文章推荐
- 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)
- 设计模式(二)之装饰模式(Decorator Pattern)
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- 23种设计模式-7.装饰模式(Decorator Pattern)
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- NET设计模式之一:装饰模式(Decorator Pattern)
- 设计模式13 - 装饰模式【Decorator Pattern】
- Java设计模式十九:装饰模式(Decorator Pattern)
- 设计模式-装饰模式(Decorator Pattern)
- 设计模式(三)The Decorator Pattern 装饰器模式
- 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)
- 设计模式_装饰模式(Decorator Pattern)
- 小鸦之设计模式(4) - 装饰模式Decorator pattern
- .NET设计模式(10):装饰模式(Decorator Pattern)
- 设计模式拾荒之装饰器模式( Decorator Pattern): Oracle 数据库打印PreparedStatement
- 设计模式8:Decorator Pattern (装饰模式)
- 设计模式之装饰模式(Decorator Pattern)
- DOTA版设计模式——装饰模式[Decorator Pattern]
- .NET设计模式(10):装饰模式(Decorator Pattern)
- .NET设计模式-装饰模式(Decorator Pattern)