裝飾者模式

/**
 * 抽象構件
 */
public abstract class Component {
   public abstract void operate();
}
/**
 * 具體構件
 */
public class CreateComponent extends Component {

	@Override
	public void operate() {
		System.out.println("do somthing...........");
	}

}
/**
 * 抽象裝飾者
 */
public abstract class Decorator extends Component {
	private  Component component=null;

	public Decorator(Component _component) {
		this.component = _component;
	}

	@Override
	public void operate() {
		this.component.operate();
	}

}
/**
 *2014-10-4上午09:26:44
 */
public class CreateDecorator extends Decorator {

	public CreateDecorator(Component _component) {
		super(_component);
	}
	
	private void method(){
		System.out.println("裝飾者1。。。。。");
	}
	
	public void operate() {
		this.method();
		super.operate();
	}
}
public class CreateDecorator2 extends Decorator {

	public CreateDecorator2(Component _component) {
		super(_component);
	}
	private void method(){
		System.out.println("裝飾者2。。。。。");
	}
	
	public void operate() {
		this.method();
		super.operate();
	}
	
}
/**
 * 
 *
 *@date  2014-10-4上午09:32:08
 */
public class Client {
	/**
	 * 1.裝飾類和被裝飾類能夠獨立發展,不會相互耦合。
	 * 2.裝飾模式是一種繼承關係的替代方案
	 * 3.裝飾模式能夠動態的擴展一個實現類的功能。
	 *   裝飾模式缺點:
	 *   多層的裝飾是比較複雜的
	 *   裝飾模式的應用場景:
	 *   1.須要擴展一個類的功能,或者給一個類增長附加的功能
	 *   2.須要動態的給一個對象增長功能,這些功能也能夠動態的撤銷
	 *   3.須要爲一批兄弟類進行改裝或增長功能,首選裝飾模式
	 */

	public static void main(String[] args) {
		Component component = new CreateComponent();
		
		component = new CreateDecorator(component);
		
		component = new CreateDecorator2(component);
		
		component.operate();
	}

}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息