定义
Decorator Pattern Attaches additional responsibilities to an object dynamically . Decorators provide a flexible alternative to sub classing for extending functionality .
装饰器模式 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
图示
说明
1.Component就是装饰器模式中公共方法的类,在装饰器模式结构图的顶层。
2.ConcreateComponent是转换器模式中具体的被装饰的类,IO包中的媒体流就是此种对象。
3.Decorator装饰器模式中的核心对象,所有具体装饰器对象的父类,完成装饰器的部分职能。在上面的例子中Decorator类和这里的对应。该类可以只做一些简单的包裹被装饰的对象,也可以还包含对Component中方法的实现……他有一个鲜明的特点:继承至Component,同时包含一个Component作为其成员变量。装饰器模式动机中的动态地增加功能是在这里实现的。4.ComponentDecoratorA,ComponentDecoratorB,ComponentDecoratorC是两个具体的装饰器对象,他们完成具体的装饰功能。装饰功能的实现是通过调用被装饰对象对应的方法,加上装饰对象自身的方法。这是装饰器模式动机中的添加额外功能的关键。
总结
装饰器模式能解决继承带来的类膨胀问题,就像定义说的那样能动态的改变对象的形为。装饰器模式也是面向对象软件设计里一个非常重要的设计原则的体现:多用组合,少用继承.