代理者模式----设计模式系列

<pre name="code" class="java">代码注释很清晰就不罗嗦了
 
 
public interface iGiveGift {

	void GiveFlowers();
	void GiveShoes();
	
}

/**
 * 
 * 代理者
 */
public class Proxy implements iGiveGift {

	Pursuit mPursuit;

	public Proxy(SchoolGirl schoolGirl) {
		this.mPursuit = new Pursuit(schoolGirl);
	}

	@Override
	public void GiveFlowers() {
		mPursuit.GiveFlowers();
	}

	@Override
	public void GiveShoes() {
		mPursuit.GiveShoes();
	}

}

<span style="font-family: Arial, Helvetica, sans-serif;">/** 真正的追求者 */</span>
public class Pursuit implements iGiveGift {

	private SchoolGirl mm;

	public Pursuit(SchoolGirl mm) {
		this.mm = mm;
	}

	@Override
	public void GiveFlowers() {
		System.out.println(mm.getName() + "送花");
	}

	@Override
	public void GiveShoes() {
		System.out.println(mm.getName() + "送鞋");
	}

}


 
 
/**被追求者*/
public class SchoolGirl {

	
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
}
/**
 * 为别人做嫁妆----代理者模式 <br/>
 * 代理模式,为其他对象提供一种代理以控制对这个对象的访问。
 */
public class Test {

	public static void main(String[] args) {

		SchoolGirl mSchoolGirl = new SchoolGirl();
		mSchoolGirl.setName("狗剩子");

		Proxy mProxy = new Proxy(mSchoolGirl);
		// 看似调用Proxy的GiveFlowers方法
		// 其实在Proxy的GiveFlowers的方法里调用的还是Persuit的GiveFlowers方法
		// 好处:在Test类里隐藏了Persuit类
		mProxy.GiveFlowers();
		mProxy.GiveShoes();

	}

}


 

你可能感兴趣的:(设计模式,代理模式)