设计模式-装饰模式

(大话设计模式学习总结)

装饰模式(Decorator)定义:装饰模式动态的给一个对象添加一些额外,就增加功能来说,装饰模式比生成子类更加灵活。

 装饰模式利用setComponent来对对象进行包装,生成一条对象链,每个装饰对象的实现和如何使用对象分离开,装饰对象只关心自己的功能,无需关系如何被添加到对象链当中。

具体代码:

public abstract class Component {

   public abstract void operation();

}

 

public class ConcreteComponent extends Component {

   @Override

   public void operation() {

      System.out.println("ConcreteComponent");

   }

}

 

public class Decorator extends Component{

   private Component component;

   public Component getComponent() {

      return component;

   }

   public void setComponent(Component component) {

      this.component = component;

   }

 

   @Override

   public void operation() {

      if (component != null) {

         component.operation();

      }

   }

}

 

public class ConcreteDecoratorA extends Decorator {

   private String addedState;

   @Override

   public void operation(){

      super.operation();

      addedState = "New State";

      System.out.println("ConcreteDecoratorA");

   }

}

 

public class ConcreteDecoratorB extends Decorator {

   private void addBehavior() {

   }

  

   @Override

   public void operation(){

      addBehavior();

      super.operation();

      System.out.println("ConcreteDecoratorB");

   }

}

 

public class TestDemo {

   @Test

   public void testDecorator(){

      Component component = new ConcreteComponent();

      Decorator decoratorA = new ConcreteDecoratorA();

      Decorator decoratorB = new ConcreteDecoratorB();

      decoratorA.setComponent(component);

      decoratorB.setComponent(decoratorA);

     

      decoratorB.operation();

   }

}

 

posted on 2018-07-19 15:59  djboaer  阅读(92)  评论(0)    收藏  举报

导航