多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP设计模式漫谈之代理模式

时间:2017-11-29 14:52:48 [来源]:郑州PHP培训学校

   PHP设计模式漫谈之代理模式

  设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。
  更多关于PHP设计模式方面的入门与应用可以参考51CTO之前的报道《使用设计模式改善程序结构》以及《架构、框架、设计模式之间的关系简述》。
  我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。51CTO.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。
  今天我们要谈的是PHP设计模式中的代理模式(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。
  从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。
  PHP设计模式中的代理模式
  PHP设计模式中的代理模式示例
  代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。
  参与者:
  ◆客户端(Client):取决于主体(Subject)实现;
  ◆主体(Subject):RealSubject的抽象;
  ◆真实主体(RealSubject):完成代价高昂的工作或包含大量的数据;
  ◆代理(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。
  下面是两个被广泛使用的代理模式例子:
  1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。
  2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。

上一篇:为你总结一些PHP信息函数

下一篇:深入解读PHP运行机制功能