Welcome

首页 / 软件开发 / 数据结构与算法 / 解读设计模式----装饰模式(Decorator Pattern)

解读设计模式----装饰模式(Decorator Pattern)2011-12-28 博客园 Bēniaǒ装饰模式(Decorator)也叫包装器模式(Wrapper)。以“装饰”的含义生动形象地描绘了“动态地给一个对象添加一些额外的职责”的意图。GOF在《设计模式》一书中给出的定义为:动态地给一个对象添加一些额外的职责。装饰模式充分利用了继承和聚合的优势,创造出无与论比的设计美学。就增加功能来说,Decorator模式相比生成子类更为灵活。

UML图:

一、使用Decorator模式的动机

现在有这样一个场景,要求我们为一个对象动态添加新的职责,这个职责并不修改原有的行为,而是在原有行为的基础上添加新的功能,就好比我们在吃薯条的时候涂上新鲜美味的番茄汁一般。

从面向对象的角度来说,我们要为一个对象添加一新的职责完全可以利用继承机制来实现,但是这样的设计会导致一个问题,“过度地使用继承来扩展对象的功能”由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着字类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀,也就是所谓的类爆炸。如何使“对象功能的扩展”能够根据需要来动态地实现同时又避免“扩展功能的增加”带来的类爆炸问题?从而使得任何“功能扩展变化”所导致的影响将为最低?