1. 程式人生 > >decorator - 物件結構模式

decorator - 物件結構模式

  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();
	}
}