设计模式学习03-装饰器模式
2009-03-23 01:36
253 查看
定义
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是两个具体的装饰器对象,他们完成具体的装饰功能。装饰功能的实现是通过调用被装饰对象对应的方法,加上装饰对象自身的方法。这是装饰器模式动机中的添加额外功能的关键。
总结
装饰器模式能解决继承带来的类膨胀问题,就像定义说的那样能动态的改变对象的形为。装饰器模式也是面向对象软件设计里一个非常重要的设计原则的体现:多用组合,少用继承.
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是两个具体的装饰器对象,他们完成具体的装饰功能。装饰功能的实现是通过调用被装饰对象对应的方法,加上装饰对象自身的方法。这是装饰器模式动机中的添加额外功能的关键。
总结
装饰器模式能解决继承带来的类膨胀问题,就像定义说的那样能动态的改变对象的形为。装饰器模式也是面向对象软件设计里一个非常重要的设计原则的体现:多用组合,少用继承.
相关文章推荐
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)
- 软件工程 - 设计模式学习之装饰模式Decorator
- 设计模式学习笔记--装饰器模式
- 设计模式学习6 -- Decorator(装饰)模式
- swift设计模式学习 - 装饰模式
- 黑马程序员_基础_IO流学习笔记_文本文件读取及复制、字符流的缓冲区和装饰设计模式
- 设计模式 学习笔记(3)装饰模式、代理模式
- Head First 设计模式学习笔记(3)---装饰器模式
- Java IO学习【10】装饰设计模式
- 设计模式学习笔记-装饰模式
- 黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式
- 【HeadFirst 设计模式学习笔记】3 装饰模式
- 设计模式学习--装饰模式
- 设计模式学习之装饰模式
- 设计模式学习(八)桥接模式-组合模式-装饰模式
- 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)
- 设计模式学习笔记——装饰模式
- 设计模式学习笔记(三:装饰模式)
- 学习设计模式-装饰模式