您的位置:首页 > 其它

设计模式——代理模式

2016-03-05 23:36 309 查看
来人!我要报警,大话设计模式居然教程序员追妹子!今天继续学习了代理模式,现阶段感觉比较好理解,随着自己学习的深入相必会发现这个模式的优点。

1、定义:为其他对象提供一种代理以控制对这个对象的访问。

2、结构图:



3、程序示例:

首先建立subject接口:

IGiveGift类:

public interface IGiveGift {
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}


然后定义SchoolGirl类,也就是被追求者

public class SchoolGirl {

private String name;

public String getName() {
return name;
}

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


追求者类Pursuit(RealProject类)

public class Pursuit implements IGiveGift{

SchoolGirl mm;

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

public void GiveDolls(){
System.out.println(mm.getName()+",送你洋娃娃");
}

public void GiveFlowers(){
System.out.println(mm.getName()+",送你鲜花");
}

public void GiveChocolate(){
System.out.println(mm.getName()+",送你巧克力");
}
}


代理者,也就是帮忙递东西的代理Proxy类

public class Proxy implements IGiveGift{

Pursuit gg;

public Proxy(SchoolGirl mm){
gg = new Pursuit(mm);
}
public void GiveDolls(){
gg.GiveDolls();
}

public void GiveFlowers(){
gg.GiveFlowers();
}

public void GiveChocolate(){
gg.GiveChocolate();
}
}


这里要注意,此类中的对象为真正的追求者也就是RealProject类。

程序测试Test类:

public class Test {
public static void main(String args[]){
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.setName("娇娇");

Proxy daili = new Proxy(jiaojiao);

daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();
}
}


测试结果:

娇娇,送你洋娃娃

娇娇,送你鲜花

娇娇,送你巧克力

4、总结:(留下以后慢慢理解)

代理分类

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

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

(3)安全代理,用来控制真是对象访问时的权限。

(4)智能指引,是指当前调用真是对象时,代理处理另外一些事。

最近天天在看书,希望能提高效率,随着学习的深入能提高领悟力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: