①UML设计:
②定义 : 动态的给对象增加新的功能 ,装饰器模式可以提供比继承更多的灵活性,允许系统动态的提供一个需要的“装饰”,或者去除一个“装饰”。
③示例:
/** * 抽象构建角色 */ public interface Component{ void function(); } /** * 具体构建角色 */ public class ConcreteComponent implements Component{ @Override public void function(){ System.out.println("function A"); } } /** * 构建装饰者角色 */ public class Decorator implements Component{ //持有一个Component对象 Component component; public Decorator(Component component){ this.component = component; } @Override public void function(){ this.component.function(); } } /** * 构建具体装饰着角色A */ public class ConcreteDecoratorA extends Decorator{ public ConcreteDecoratorA(Component component){ super(component); } @Override public void function(){ super.function(); this.addBehavior(); } //新增功能行为 private void addBehavior(){ System.out.println("add behavior A"); } } /** * 构建具体装饰着角色B */ public class ConcreteDecoratorB extends Decorator{ public ConcreteDecoratorB(Component component){ super(component); } @Override public void function(){ super.function(); this.addBehavior(); } //新增功能行为 private void addBehavior(){ System.out.println("add behavior B"); } } public class Test{ public static void main(String args[]){ Component component = new ConcreteComponent(); Component decoratorA = new ConcreteDecoratorA(component); Component decoratorB = new ConcreteDecoratorB(decoratorB);} decoratorB.function(); }