代理模式:为其他对象提供一种代理以控制对这个对象的访问
例如 :有三个对象,一个被追求者,一个追求者,一个代理,代理模式是通过代理把要送的东西送给被追求者,被追求都不知道真正送东西的人是谁
他只认识这个代理。
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();
}
}