9.Decorator(装饰者模式)
Decorator(装饰者模式)
以对客户端透明的方式动态的为对象附加责任。此模式提供了一个比继承更为灵活的替代方案来扩展对象的功能。虽然与适配器一样的被称作包装者(wrapper)但他们本质有区别。适配器要改变所考虑对象接口,而不一定改变对象的性能;装饰者是要保持对象接口,从而增强对象性能。
适用情况:
1.在不影响其他对象的情况下,动态且透明的增加一个责任到一个对象。
2.希望责任和功能可以随时增加或取消。
3.当无法通过类的继承来扩展功能时。(继承过多;类的定义被隐藏;类的定义不便于生成派生类)
结构:
1.抽象部件(CComponent):定义一个对象接口,可以动态的附加责任到其他对象上。
2.具体部件(CConcreteComponent):定义可以被附加责任的对象。
3.装饰者(CDecorator):维护一个到抽象部件对象的引用,并定义与抽象部件接口一致的接口,以便“装饰”抽象部件对象的接口。
4.具体装饰者(CConcreteDecorator):附加责任到抽象部件,完成具体的“装饰”。
。。。。