代理模式 (追女孩代理)

greatmind829發表於2012-06-30

代理模式:為其他物件提供一種代理以控制對這個物件的訪問

   例如 :有三個物件,一個被追求者,一個追求者,一個代理,代理模式是通過代理要送的東西送給被追求者,被追求都不知道真正送東西的人是誰

       他只認識這個代理。

package com.proxy;

/**
 * 被追求者 
 * @author Administrator
 *
 */
public class Girl {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

package com.proxy;

/**
 * 追求者
 * @author Administrator
 *
 */
public class Pursuit  implements GiveGift{

    private Girl girl ;
	public Pursuit (Girl girl){
		this.girl = girl;
	}
	
	@Override
	public void giveDoll() {
		System.out.println(girl.getName()+"---送你洋娃娃");
	}

	@Override
	public void giveFlowers() {
		System.out.println(girl.getName()+"---送你花");
	}

	@Override
	public void giveChocolate() {
		System.out.println(girl.getName()+"---送你巧克力");
	}

}

package com.proxy;

/**
 *  送禮物類 
 * @author Administrator
 *
 *  追求者和代理 都擁有這些方法
 */
public interface GiveGift {

	public void giveDoll ();
	
	public void giveFlowers();
	
	public void giveChocolate();
	
}

package com.proxy;

/**
 * 代理類 
 * @author Administrator
 *  代理類代理追求者 送東西
 */
public class Proxy implements GiveGift {

	//代理類代理追求者 送東西
	private Pursuit pursuit;
	public Proxy (Girl girl){
		this.pursuit = new Pursuit(girl);
	}
	
	@Override
	public void giveDoll() {
      pursuit.giveDoll();
	}

	@Override
	public void giveFlowers() {
     pursuit.giveFlowers();
	}

	@Override
	public void giveChocolate() {
     pursuit.giveChocolate();
	}

}

package com.proxy;
/**
 * 代理模式:為其他物件提供一種代理以控制對這個物件的訪問
 * @author Administrator
 *
 */
public class MainRun {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Girl girl = new Girl();
		girl.setName("李花");
		Proxy proxy = new Proxy(girl);   //通過代理呼叫,被追求不知道真正送花的人。
		    
		
		proxy.giveDoll();
		proxy.giveFlowers();
		proxy.giveChocolate();
	}

}



相關文章