javaでデザインモード-delegate(代理)

1569 ワード

http://yangguangfu.iteye.com/blog/815787---これはとても良い参考です.
代理の一例について:会議--社長--秘書の小明/会議--CEO--秘書の小明さん、明さんは社長とCEOの代わりに会議をします.明さんはその代理です.
1.会議の機能インターフェース(クラス名に問題がある):
/*
 *     --      
 * 
 */
public interface MiShu {
public void kaiHui();//            
}
2.ボス
とCEOのイメージ:
/*
 *     
 * 
 */
public class TheBoos implements MiShu{

	@Override
	public void kaiHui() {
		// TODO Auto-generated method stub
		System.err.println("       ");
	}

}
/*
 * CEO
 */
public class TheCEO implements MiShu{

	@Override
	public void kaiHui() {
		// TODO Auto-generated method stub
		System.err.println("   CEO    ");
	}

}
3.代理人、明ちゃんが出荷しています.つまり秘書の対象ですが、例の名前に問題があります.例の秘書類は会議できる人と呼ぶべきです.
/*
 *                    
 * 
 */
public class XiaoMing implements MiShu{
private MiShu mishu;




	public XiaoMing(MiShu mishu) {
	//   CEO             
	this.mishu = mishu;
}
	public XiaoMing() {
		//         
		this.mishu = new TheBoos();
	}
	@Override
	public void kaiHui() {
		// TODO Auto-generated method stub
		System.err.println("           ");
		mishu.kaiHui();
	}


}
4.会議が始まりました.明日さんは詰め物をし始めます.
public class MyClient {
public static void main(String[] args) {
	//CEO    ,        
	TheCEO ceo=new TheCEO();
	XiaoMing xiaoming=new XiaoMing(ceo);
	xiaoming.kaiHui();
	//           
	xiaoming=new XiaoMing();
	xiaoming.kaiHui();
}
}
 さあ、出力を見てください.
           
   CEO    
           
       
とてもうれしいです.私達の明さんは無理をして成功しました.