您的位置:首页 > 其它

装饰器模式(笔记)

2014-02-17 15:26 288 查看
定义

动态的给对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

主要角色:

抽象构件角色: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: