定义:动态地给某个对象添加一些额外的职责。Decorator模式是结构型模式中的一种,充分利用了继承与聚合的优势。
(1)装饰类与被装饰类有共同的超类。
(2)可以一个或者多个装饰者包装一个对象
(3)既然装饰者与被装饰者有相同的类型,所以在任何需要原始对象(被包装)的场合,可以用装饰过的对象替换它。
(4)装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。
(5)对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象。
使用Decorator模式的方法
(1)定义一个抽象的类,继承自需要添加职责的超类。
命名规则可以设定为:添加职责名+需要添加职责的处理名+Decorator。如:SecuritySignInDecorator,意思为:给SignIn处理添加Security(安全)职责。
(2)该抽象类定义一个超类的成员变量,功能将在该超类基础上进行扩展。
(3)定义一个与超类需要扩展的处理名相同的处理,并调用成员变量需要扩展的处理。
(4)定义具体实现类,继承自抽象类。重写抽象类定义的处理,使用base.XXX的形式,使它能调用超类的处理