9.Decorator(装饰者模式)

Decorator(装饰者模式)

     以对客户端透明的方式动态的为对象附加责任。此模式提供了一个比继承更为灵活的替代方案来扩展对象的功能。虽然与适配器一样的被称作包装者(wrapper)但他们本质有区别。适配器要改变所考虑对象接口,而不一定改变对象的性能;装饰者是要保持对象接口,从而增强对象性能。

 

适用情况:

1.在不影响其他对象的情况下,动态且透明的增加一个责任到一个对象。

2.希望责任和功能可以随时增加或取消。

3.当无法通过类的继承来扩展功能时。(继承过多;类的定义被隐藏;类的定义不便于生成派生类)

 

结构:

1.抽象部件(CComponent):定义一个对象接口,可以动态的附加责任到其他对象上。

2.具体部件(CConcreteComponent):定义可以被附加责任的对象。

3.装饰者(CDecorator):维护一个到抽象部件对象的引用,并定义与抽象部件接口一致的接口,以便“装饰”抽象部件对象的接口。

4.具体装饰者(CConcreteDecorator):附加责任到抽象部件,完成具体的“装饰”。

 

。。。。

posted on 2008-08-15 17:31  goldany  阅读(255)  评论(0编辑  收藏  举报