您的位置:首页 > 其它

读《大话设计模式》有感之代理模式

2013-12-06 15:45 218 查看
  似乎是一个月前,看了这么一则新闻:某一出国代理组织,由于未将学生的雅思托福成绩上交给所报院校,使得该学生未入读理想院校。这件事情很有趣,记者同志大概也是很感兴趣的,就去问了该组织,为什么未将该学生的雅思托福成绩上交呢?当然,答案也是相当得令人意外。说是保管学生资料钥匙的负责人最近要生孩子,所以可能忘了将学生材料统一上报。至此,大家估计就只想“呵呵”了。

  在现实中代理,会出漏子,因为人员操作,组织庞大在所难免。其实在java编程的时候,也有一个很有趣的设计模式:代理模式。

  代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

  代理模式的结构图



图 1

  读完定义,现在来看看代码这块是怎么实现的。

  IAbroad接口(Subject)



图 2

  Person类(RealSubject)



图 3

  Proxy类(Proxy)



图 4

  University类(目标对象)



图 5

  客户端代码(Client)



图 6

  (图 1)是定义了想出国的学生(图 2)和代理组织(图 3)的共用接口:申请出国接口;这样就只要知道要出去的国家名,那么客户端根本无需知道被代理者的信息,就可以完成申请了。

  那么代理模式一般是用在什么场合呢?

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

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

  第三:安全代理,用来控制真实对象访问的权限。一般用于对象应该有不同的访问权限的时候。

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

  其实,代理就是真是对象的代表。

  部分语句摘自《大话设计模式》,谢谢大神~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: