设计模式:代理模式(Proxy)
2016-08-31 17:12
411 查看
代理模式:为其他对象提供一种代理以控制对这个对象的访问
仅仅一句话自然是说明不了代理模式是什么,我们先看看代码例子,什么是代理:
举一个栗子吧,假设有个人家里有困难,A同学知道了这个人的情况,想捐点钱给他,但是又想做好事不留名,于是A同学让B同学帮忙把钱给这个人。
那么我们先建一个People类:
然后写一个代理接口,我们这个栗子围绕捐钱,所以这个接口有一个送钱的方法:
两个同学分别实现该接口:
然后调用:
运行结果:
大众脸,钱给你,不用谢,我叫红领巾
这下b同学不用直接给大众脸送钱了~
我们把同学A叫做代理,同学B叫做真实需求。AB都实现了Proxy,这样就可以在使用真实需求的时候,调用代理。
代理模式一般会在一下几个场合用到:
1.远程代理,为一个对象在不同的地址空间提供局部代表。这样就可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化很长的真实对象。在真实对象还没有完全实例化之前,可以先用代理对象代替。
3.安全代理,用来控制真实对象访问时的权限。
4.智能指引,当调用真实对象时,代理处理另外一些事情。
代理对象就是真是对象的代表。
仅仅一句话自然是说明不了代理模式是什么,我们先看看代码例子,什么是代理:
举一个栗子吧,假设有个人家里有困难,A同学知道了这个人的情况,想捐点钱给他,但是又想做好事不留名,于是A同学让B同学帮忙把钱给这个人。
那么我们先建一个People类:
class People { String name; People(String name) { this.name = name; } }
然后写一个代理接口,我们这个栗子围绕捐钱,所以这个接口有一个送钱的方法:
interface Proxy { void giveMoney(); }
两个同学分别实现该接口:
class StudentA implements Proxy { private Proxy p; StudentA(People pople) { this.p = new StudentB(pople); } @Override public void giveMoney() { p.giveMoney(); } } class StudentB implements Proxy { People p; StudentB(People p) { this.p = p; } @Override public void giveMoney() { System.out.println(p.name+"钱给你,不用谢,我叫红领巾"); } }
然后调用:
public static void main(String[] args) { //这个有困难的人叫做大众脸 People dazhonglian=new People("大众脸"); StudentA a=new StudentA(dazhonglian); a.giveMoney(); }
运行结果:
大众脸,钱给你,不用谢,我叫红领巾
这下b同学不用直接给大众脸送钱了~
我们把同学A叫做代理,同学B叫做真实需求。AB都实现了Proxy,这样就可以在使用真实需求的时候,调用代理。
代理模式一般会在一下几个场合用到:
1.远程代理,为一个对象在不同的地址空间提供局部代表。这样就可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化很长的真实对象。在真实对象还没有完全实例化之前,可以先用代理对象代替。
3.安全代理,用来控制真实对象访问时的权限。
4.智能指引,当调用真实对象时,代理处理另外一些事情。
代理对象就是真是对象的代表。
相关文章推荐
- 设计模式之Proxy代理模式
- 设计模式(6)-代理模式(Proxy)
- 设计模式之Proxy(代理)
- NET常用设计模式——代理(Proxy)模式
- 设计模式--代理模式(Proxy Model)
- 设计模式----Proxy(代理)模式
- 设计模式之Proxy(代理)
- 设计模式学习笔记(十三)——Proxy代理模式
- 设计模式之Proxy(代理)
- Java设计模式:Proxy(代理)
- 设计模式与泡mm的关系之Proxy代理模式及代理模式的再思考
- 设计模式 --- 代理模式(Proxy) 精选经验合集
- 设计模式之代理模式(Proxy)
- 设计模式之代理(Proxy)----对象结构型模式
- 设计模式之Proxy(代理)
- Java设计模式:Proxy(代理)
- 设计模式袖珍版 连续转载之 - Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式(8)-代理模式(Proxy)