[设计模式]装饰模式
一、简介
1、名称:装饰(Decorator)模式或者包装器(Wrapper)模式
2、定义:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
二、参与者
1、Component
——定义一个对象接口,可以给这些对象动态地添加职责。
2、ConcreteComponent
——定义一个对象,可以给这个对象添加一些职责。
3、Decorator
——维持一个指向Component对象的指针,并定义一个与Component接口一致的接口。
三、协作
Decorator将请求转发给它的Component对象,并有可能在转发请求前后执行一些附加的动作。
四、总结
当系统需要新功能的时候,是向旧的类中添加新的代码。这些新的代码通常装饰了原有类的核心职责或主要行为。它们在主类中加入了新的字段,新的方法和新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为的需要。而装饰模式却提供了一个非常好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包装它所需要的装饰的对象,因此,当需要执行特殊的行为时,客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰公恩给你包装对象。
参考文档