标签:


public interface Component{ void method(); } publicclassConcreteComponent implements Component{ publicvoid method(){ System.out.println("原来的方法"); } } public abstract classDecorator implements Component{ protectedComponent component; publicDecorator(Component component){ super(); this.component = component; } publicvoid method(){ component.method(); } } publicclassConcreteDecoratorA extends Decorator{ publicConcreteDecoratorA(Component component){ super(component); } publicvoid methodA(){ System.out.println("被装饰器A扩展的功能"); } publicvoid method(){ System.out.println("针对该方法加一层A包装"); super.method(); System.out.println("A包装结束"); } } publicclassConcreteDecoratorB extends Decorator{ publicConcreteDecoratorB(Component component){ super(component); } publicvoid methodB(){ System.out.println("被装饰器B扩展的功能"); } publicvoid method(){ System.out.println("针对该方法加一层B包装"); super.method(); System.out.println("B包装结束"); } }publicclassMain{ publicstaticvoid main(String[] args){ Component component =newConcreteComponent(); //原来的对象 component.method(); //原来的方法 ConcreteDecoratorA concreteDecoratorA =newConcreteDecoratorA(component); //装饰成A concreteDecoratorA.method(); //原来的方法 concreteDecoratorA.methodA(); //装饰成A以后新增的方法 ConcreteDecoratorB concreteDecoratorB =newConcreteDecoratorB(concreteDecoratorA);//装饰成A以后再装饰成B concreteDecoratorB.method(); //原来的方法 concreteDecoratorB.methodB(); //装饰成B以后新增的方法 } } 
标签:
原文地址:http://www.cnblogs.com/Doing-what-I-love/p/5621177.html