首页 > 代码库 > Chapter 7 代理模式

Chapter 7 代理模式

代理模式:为其它对象提供一种代理以控制对这个对象的访问。

代码:

package xiao;

class Girl{
private String name;
public void setName(String name){
this.name = name;
}
}
interface GiveGift{
public void giveDolls();
public void giveFlowers();
public void giveChocolate();
}
class Pursuit implements GiveGift{
private Girl girl;
public Pursuit(Girl girl){
this.girl = girl;
}
public void giveDolls(){
System.out.println("give she Dolls!");
}
public void giveFlowers(){
System.out.println("give she Flowers!");
}
public void giveChocolate(){
System.out.println("give she Chocolate!");
}
}
class Proxy implements GiveGift{
private Pursuit pursuit;
public Proxy(Girl girl){
pursuit = new Pursuit(girl);
}
public void giveDolls(){
pursuit.giveDolls();
}
public void giveFlowers(){
pursuit.giveFlowers();
}
public void giveChocolate(){
pursuit.giveChocolate();
}
}
public class Hello {

public static void main(String[] args) throws Exception{
Girl girl = new Girl();
girl.setName("jiaojiao");
Proxy daili = new Proxy(girl);
daili.giveDolls();
daili.giveFlowers();
daili.giveChocolate();
}
}

这是通过男孩A想追女孩C,而男孩A不认识C,但是男孩B认识C,A通过B来给C送礼物的代码。

代理模式的用途:

第一:远程代理,为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

第二:虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

第三:安全代理,用来控制真实对象访问时的权限。

第四:智能指引,是指当调用真实的对象时,代理处理另外一些事。