decorator - 物件結構模式
阿新 • • 發佈:2018-12-18
1.意圖
動態的給一個物件新增一些職責,decorator模式比生成子類更靈活
2.參與者
Compoment - 定義一個物件介面,可以給這些物件動態的新增職責
ConcreteCompoment - 定義一個物件,可以給這個物件動態地新增職責
Decorator - 維持一個指向component物件的指標,並定義一個與component
介面一致的介面。
ConcreteDecorator - 向元件新增職責。
3.結構
程式碼:
public interface Compoment { void operation(); } public class ConcreteCompoment implements Compoment { @Override public void operation() { System.out.println("ConcreteCompoment operation"); } } public class Decorator implements Compoment { Compoment compoment = null; Decorator(Compoment compoment){ this.compoment = compoment; } @Override public void operation() { compoment.operation(); } } public class ConcreteDecoratorA extends Decorator { ConcreteDecoratorA(Compoment compoment) { super(compoment); } @Override public void operation() { super.operation(); addBehavior(); } private void addBehavior(){ System.out.println("ConcreteDecoratorA addBehavior"); } } public class ConcreteDecoratorB extends Decorator { ConcreteDecoratorB(Compoment compoment) { super(compoment); } } public class Client { public static void main(String[] args) { ConcreteDecoratorA A = new ConcreteDecoratorA(new ConcreteCompoment()); A.operation(); } }