设计模式笔记——Decorator
2012-08-15 16:49
190 查看
装饰模式Decorator
动态地给一个对象增加额外的职责,就增加功能来说,装饰模式比生成子类更灵活。
装饰模式视为已经有的功能动态地添加多更多的功能的一种方式。它把要装饰的功能单独封装在一个类里面,并让这个类封装它要装饰的对象,这样就可以为原有的对象增加新的功能,从而不会因为功能的扩展增加了竹类的复杂度。当需要执行特殊行为时,用户可以选择的使用装饰功能包含的对象。
有效的把类的核心职责和装饰功能分开,除掉了类中重复的装饰修饰。
动态地给一个对象增加额外的职责,就增加功能来说,装饰模式比生成子类更灵活。
装饰模式视为已经有的功能动态地添加多更多的功能的一种方式。它把要装饰的功能单独封装在一个类里面,并让这个类封装它要装饰的对象,这样就可以为原有的对象增加新的功能,从而不会因为功能的扩展增加了竹类的复杂度。当需要执行特殊行为时,用户可以选择的使用装饰功能包含的对象。
有效的把类的核心职责和装饰功能分开,除掉了类中重复的装饰修饰。
package decorator.pattern; public class DecoratorPattern { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ConcreteCompoment compoment=new ConcreteCompoment(); ConcreteDecoratorA decoratorA=new ConcreteDecoratorA(); ConcreteDecoratorB decoratorB=new ConcreteDecoratorB(); decoratorA.SetCompoment(compoment); decoratorB.SetCompoment(decoratorA); decoratorB.Operation(); } }
package decorator.pattern; public interface Compoment { public void Operation(); }
package decorator.pattern; public class ConcreteCompoment implements Compoment { @Override public void Operation() { // TODO Auto-generated method stub System.out.println("Concrete Compoment Operation"); } }
package decorator.pattern; public class Decorator implements Compoment { protected Compoment compoment; public void SetCompoment(Compoment compoment) { this.compoment = compoment; } @Override public void Operation() { // TODO Auto-generated method stub if (compoment != null) compoment.Operation(); } }
package decorator.pattern; public class ConcreteDecoratorB extends Decorator { private String state; @Override public void Operation() { // TODO Auto-generated method stub super.Operation(); setState("stateB"); System.out.println("ConcreteDecoratorB Operation"); } private void setState(String state) { this.state = state; } public String getState() { return state; } }
package decorator.pattern; public class ConcreteDecoratorA extends Decorator { private String state; @Override public void Operation() { // TODO Auto-generated method stub super.Operation(); setState("stateA"); System.out.println("ConcreteDecoratorA Operation"); } private void setState(String state) { this.state = state; } public String getState() { return state; } }
相关文章推荐
- 设计模式学习笔记(三)装饰模式(Decorator)
- 设计模式 笔记 装饰模式 Decorator
- 咕泡-装饰器 decorator 设计模式笔记
- HeadFirst 设计模式笔记(三)—— decorator
- 【设计模式】学习笔记3:装饰者模式(Decorator )
- 设计模式学习笔记(2)——装饰模式(Decorator Pattern)
- 设计模式学习笔记(三)装饰模式(Decorator)
- 六 装饰模式(Decorator)——设计模式学习笔记
- 设计模式 学习笔记 之 装饰模式 Decorator(6)
- 设计模式学习笔记--装饰者模式(Decorator Pattern)
- 设计模式笔记(5 COMPOSITE & DECORATOR)
- 设计模式笔记——Decorator
- 【设计模式学习笔记十】【结构型模式】【装饰模式(Decorator)】
- 设计模式学习笔记---装饰模式decorator(Java版)
- 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)
- 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)
- 设计模式笔记之装饰者模式(Decorator Pattern)
- 设计模式学习笔记——修饰模式(Decorator Pattern)
- 设计模式笔记3:装饰者模式(Decorator Pattern)
- 设计模式学习笔记九——Decorator模式