装饰器模式(笔记)
2014-02-17 15:26
288 查看
定义
动态的给对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
主要角色:
抽象构件角色:Component给出一个抽象接口,以规范准备接受附加责任的对象
具体构件角色:ConcreteComponent定义一个将要接收附加责任的类
装饰角色:Decorator持有一个构件对象,需要定义一个与组件接口一致的接口
具体装饰角色:ConcreteDecorator负责给构件对象添加新的责任
UML效果图:
下面简单的代码例子packagecom.pattern.decorator;
publicabstractclassComponent{
publicabstractvoidoperation();
}
publicabstractclassDecoratorextendsComponent{protectedComponentcomponent;publicDecorator(Componentcomponent){this.component=component;}publicvoidoperation();}
}}
测试类:
packagecom.pattern.decorator;
publicclassClient{
publicstaticvoidmain(String[]args){
Componentcomponent=newConcreteComponent();
}}
结果:
普通操作
新增功能A
普通操作
新增功能B
动态的给对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
主要角色:
抽象构件角色:Component给出一个抽象接口,以规范准备接受附加责任的对象
具体构件角色:ConcreteComponent定义一个将要接收附加责任的类
装饰角色:Decorator持有一个构件对象,需要定义一个与组件接口一致的接口
具体装饰角色:ConcreteDecorator负责给构件对象添加新的责任
UML效果图:
下面简单的代码例子packagecom.pattern.decorator;
publicabstractclassComponent{
publicabstractvoidoperation();
}
packagecom.pattern.decorator; publicclassConcreteComponentextendsComponent{ publicvoidoperation(){ System.out.println("普通操作"); } }
packagecom.pattern.decorator;
publicabstractclassDecoratorextendsComponent{protectedComponentcomponent;publicDecorator(Componentcomponent){this.component=component;}publicvoidoperation();}
publicclassConcreteDecoratorextendsDecorator{
publicConcreteDecoratorA(Componentcomponent){
super(component);
}
publicvoidoperation(){
System.out.println("增加功能A");
component.operation();
System.out.println("增加功能B");
}}
测试类:
packagecom.pattern.decorator;
publicclassClient{
publicstaticvoidmain(String[]args){
Componentcomponent=newConcreteComponent();
component.operation();
component=newConcreteDecorator(component);component.operation();
}}
结果:
普通操作
新增功能A
普通操作
新增功能B
相关文章推荐
- 装饰器模式学习笔记
- Head First设计模式笔记(装饰器模式)
- django学习 笔记---给cookie添加装饰器(FBV和CBV模式)
- 装饰器模式笔记
- Header First设计模式学习笔记——装饰器模式
- java学习笔记-设计模式8(装饰器模式)
- 设计模式学习笔记——装饰器模式
- 游戏设计笔记:单例模式
- Head First 学习笔记-策略模式
- 设计模式笔记---策略模式(2013.3.25)
- 笔记4:Builder模式
- 设计模式学习笔记之生成器模式
- 设计模式全面摘录笔记
- 设计模式之03抽象工厂模式(笔记)
- 设计模式 学习笔记(3)装饰模式、代理模式
- [笔记]NFC笔记——主动模式和被动模式下激活协议的流程
- 设计模式学习笔记——原型(Prototype)框架
- 企业架构模式笔记--第九章(领域逻辑模式)
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- 设计模式---简单工厂模式(学习笔记)