• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-25) 22次浏览 已收录 0个评论

设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。

更多关于PHP设计模式方面的入门与应用可以参考bitscn之前的报道《使用设计模式改善程序结构》以及《架构、框架、设计模式之间的关系简述》。

我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。bitscn.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。

今天我们要谈的是PHP设计模式中的代理模式(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。

从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。

498)this.style.width=498;” border=”0″ />
PHP设计模式中的代理模式示例

代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。

参与者

客户端(Client):取决于主体(Subject)实现;

主体(Subject):RealSubject的抽象;

真实主体(RealSubject):完成代价高昂的工作或包含大量的数据;

代理(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。

下面是两个被广泛使用的代理模式例子:

1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。

2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。

下面的代码示例实现了一个ImageProxy,推迟了图像数据的加载。

<ol class="dp-c"><li class="alt"><span><span><!---ecms -ecms p  </span></span></li><li><span class="comment"><font color="#008200">/** </font></span> </li><li class="alt"><span><span class="comment"><font color="#008200"> * Subject interface. </font></span> </span></li><li><span><span class="comment"><font color="#008200"> * Client depends only on this abstraction. </font></span> </span></li><li class="alt"><span><span class="comment"><font color="#008200"> */</font></span><span> </span></span></li><li><span class="keyword"><strong><font color="#006699">interface</font></strong></span><span> Image  </span></li><li class="alt"><span>{  </span></li><li><span>    </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> getWidth();  </span></li><li class="alt"><span> </span></li><li><span>    </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> getHeight();  </span></li><li class="alt"><span> </span></li><li><span>    </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> getPath();  </span></li><li class="alt"><span> </span></li><li><span>    </span><span class="comment"><font color="#008200">/** </font></span> </li><li class="alt"><span><span class="comment"><font color="#008200">     * @return string   the image's byte stream </font></span> </span></li><li><span><span class="comment"><font color="#008200">     */</font></span><span> </span></span></li><li class="alt"><span>    </span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> dump();  </span></li><li><span>}  </span></li><li class="alt"><span> </span></li><li><span class="comment"><font color="#008200">/** </font></span> </li><li class="alt"><span><span class="comment"><font color="#008200"> * Abstract class to avoid repetition of boilerplate code in the Proxy </font></span> </span></li><li><span><span class="comment"><font color="#008200"> * and in the Subject. Only the methods which can be provided without </font></span> </span></li><li class="alt"><span><span class="comment"><font color="#008200"> * instancing the RealSubject are present here. </font></span> </span></li><li><span><span class="comment"><font color="#008200"> */</font></span><span> </span></span></li><li class="alt"><span class="keyword"><strong><font color="#006699">abstract</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> AbstractImage </span><span class="keyword"><strong><font color="#006699">implements</font></strong></span><span> Image  </span></li><li><span>{  </span></li><li class="alt"><span>    </span><span class="keyword"><strong><font color="#006699">protected</font></strong></span><span> </span><span class="vars"><font color="#dd0000">设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。<p>更多关于<font color="#0000ff">PHP设计模式</font>方面的入门与应用可以参考bitscn之前的报道《<font color="#0000ff">使用设计模式改善程序结构</font>》以及《架构、框架、设计模式之间的关系简述》。</p><p>我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。bitscn.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。</p><p>今天我们要谈的是PHP设计模式中的<strong>代理模式</strong>(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。</p><p><strong>从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法</strong>。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。</p><p>498)this.style.width=498;" border="0" /><br /><strong><span><font size="2">PHP设计模式中的代理模式示例</font></span></strong></p><p>代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。 </p><p><strong>参与者</strong>:</p><p>◆<strong>客户端</strong>(Client):取决于主体(Subject)实现;</p><p>◆<strong>主体</strong>(Subject):RealSubject的抽象;</p><p>◆<strong>真实主体</strong>(RealSubject):完成代价高昂的工作或包含大量的数据;</p><p>◆<strong>代理</strong>(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。</p><p>下面是两个被广泛使用的代理模式例子:</p><p>1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。</p><p>2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。</p><p>下面的代码示例实现了一个ImageProxy,推迟了图像数据的加载。</p><pre class="prettyprint linenums">___FCKpd___0

以上代码实现了PHP的代理模式。简单来讲,代理模式就是为其他对象提供一个代理以控制对这个对象的访问。

关于设计模式的其他方面

我们知道了什么是设计模式以及PHP设计模式中的代理模式。这里还有一些关于设计模式的基本概念应该被熟知。

◆算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

◆面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。

◆设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

◆并非所有的软件模式都是设计模式,设计模式特指软件设计层次上的问题。还有其它非设计模式的模式,如架构模式。

我们会在下周继续为您连载《PHP设计模式漫谈》,敬请期待。

width;

  • protected 设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。

    更多关于PHP设计模式方面的入门与应用可以参考bitscn之前的报道《使用设计模式改善程序结构》以及《架构、框架、设计模式之间的关系简述》。

    我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。bitscn.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。

    今天我们要谈的是PHP设计模式中的代理模式(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。

    从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。

    498)this.style.width=498;” border=”0″ />
    PHP设计模式中的代理模式示例

    代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。

    参与者

    客户端(Client):取决于主体(Subject)实现;

    主体(Subject):RealSubject的抽象;

    真实主体(RealSubject):完成代价高昂的工作或包含大量的数据;

    代理(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。

    下面是两个被广泛使用的代理模式例子:

    1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。

    2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。

    下面的代码示例实现了一个ImageProxy,推迟了图像数据的加载。

    ___FCKpd___0

    以上代码实现了PHP的代理模式。简单来讲,代理模式就是为其他对象提供一个代理以控制对这个对象的访问。

    关于设计模式的其他方面

    我们知道了什么是设计模式以及PHP设计模式中的代理模式。这里还有一些关于设计模式的基本概念应该被熟知。

    ◆算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

    ◆面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。

    ◆设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

    ◆并非所有的软件模式都是设计模式,设计模式特指软件设计层次上的问题。还有其它非设计模式的模式,如架构模式。

    我们会在下周继续为您连载《PHP设计模式漫谈》,敬请期待。

    height;

  • protected 设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。

    更多关于PHP设计模式方面的入门与应用可以参考bitscn之前的报道《使用设计模式改善程序结构》以及《架构、框架、设计模式之间的关系简述》。

    我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。bitscn.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。

    今天我们要谈的是PHP设计模式中的代理模式(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。

    从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。

    498)this.style.width=498;” border=”0″ />
    PHP设计模式中的代理模式示例

    代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。

    参与者

    客户端(Client):取决于主体(Subject)实现;

    主体(Subject):RealSubject的抽象;

    真实主体(RealSubject):完成代价高昂的工作或包含大量的数据;

    代理(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。

    下面是两个被广泛使用的代理模式例子:

    1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。

    2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。

    下面的代码示例实现了一个ImageProxy,推迟了图像数据的加载。

    ___FCKpd___0

    以上代码实现了PHP的代理模式。简单来讲,代理模式就是为其他对象提供一个代理以控制对这个对象的访问。

    关于设计模式的其他方面

    我们知道了什么是设计模式以及PHP设计模式中的代理模式。这里还有一些关于设计模式的基本概念应该被熟知。

    ◆算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

    ◆面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。

    ◆设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

    ◆并非所有的软件模式都是设计模式,设计模式特指软件设计层次上的问题。还有其它非设计模式的模式,如架构模式。

    我们会在下周继续为您连载《PHP设计模式漫谈》,敬请期待。

    path;

  • protected 设计模式( Design Pattern)是从建筑设计领域引入到计算机科学的。设计模式是对软件设计中普遍存在(且反复出现)的各种问题,所提出的解决方案。设计模式并不直接用来完成程序码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。

    更多关于PHP设计模式方面的入门与应用可以参考bitscn之前的报道《使用设计模式改善程序结构》以及《架构、框架、设计模式之间的关系简述》。

    我们经常看到关于Java和.NET平台上设计模式的论述和讲解,其实,在PHP 5对面向对象的支持更加完善之后,设计模式的应用也可引入到PHP中并发挥重要作用。bitscn.com将从本周起以每周一期的形式连载《PHP设计模式漫谈》的系列文章,以理论与代码实例相结合的方式讲解PHP中的设计模式。希望对从事PHP研发的读者有所帮助。

    今天我们要谈的是PHP设计模式中的代理模式(Proxy),它是对简单处理程序(或指针)的增强,用于引用一个对象:这个指针被代理(Proxy)对象取代,代理对象位于客户端(Client)和真实执行程序之间,指针有一个可被多个目标利用的钩子。

    从技术上讲,这种模式在客户端和真实主体(RealSubject)之间插入一个代理对象,维护subject接口和用不同的方式委派它的方法。代理可以透明地做任何事情:懒散创建RealSubject或载入数据,与其它机器交换消息,写时复制策略等。这与HTTP代理有点类似,其客户端(如浏览器)和应用程序依赖于与HTTP服务器的联系,代理在管理连接时可以完成其它任务,如访问控制和缓存大型下载文件。

    498)this.style.width=498;” border=”0″ />
    PHP设计模式中的代理模式示例

    代理模式的对象图与装饰模式对象图在结构上类似,但表达的目的各有不同,装饰者给对象动态增加行为,而代理则控制来自客户端的访问。此外,代理只在需要时才创建RealSubject。

    参与者

    客户端(Client):取决于主体(Subject)实现;

    主体(Subject):RealSubject的抽象;

    真实主体(RealSubject):完成代价高昂的工作或包含大量的数据;

    代理(Proxy):为Client提供一个与Subject一致的引用,仅在需要时才创建RealSubject实例或与RealSubject实例通信。

    下面是两个被广泛使用的代理模式例子:

    1、对象-关系映射(Orms)在运行中创建代理作为实体类的子类,以实现懒散加载(虚拟代理),这个代理会覆盖所有实体方法,在前面追加一个载入程序,在方法被真正调用前不会包含任何数据,Orms代理支持对象间的双向关系,不用加载整个数据库,因为它们被置于当前加载对象图的边界。

    2、Java RMI使用远程代理对象(远程代理),当它们的方法被调用时,代理序列化参数,执行网络上的请求,委托调用另一个节点上的真实对象,这种技术允许透明地调用远程对象,不用担心它们是否在同一台机器上,但这种透明度很容易会使执行速度变慢。

    下面的代码示例实现了一个ImageProxy,推迟了图像数据的加载。

    ___FCKpd___0

    以上代码实现了PHP的代理模式。简单来讲,代理模式就是为其他对象提供一个代理以控制对这个对象的访问。

    关于设计模式的其他方面

    我们知道了什么是设计模式以及PHP设计模式中的代理模式。这里还有一些关于设计模式的基本概念应该被熟知。

    ◆算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

    ◆面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。

    ◆设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

    ◆并非所有的软件模式都是设计模式,设计模式特指软件设计层次上的问题。还有其它非设计模式的模式,如架构模式。

    我们会在下周继续为您连载《PHP设计模式漫谈》,敬请期待。

    data;

  • public function getWidth()
  • {
  • return $this->_width;
  • }
  • public function getHeight()
  • {
  • return $this->_height;
  • }
  • public function getPath()
  • {
  • return $this->_path;
  • }
  • }
  • /**
  • * The RealSubject. Always loads the image, even if no dump of the data
  • * is required.
  • */
  • class RawImage extends AbstractImage
  • {
  • public function __construct($path)
  • {
  • $this->_path = $path;
  • list ($this->_width, $this->_height) = getimagesize($path);
  • $this->_data = file_get_contents($path);
  • }
  • public function dump()
  • {
  • return $this->_data;
  • }
  • }
  • /**
  • * Proxy. Defers loading the image data until it becomes really mandatory.
  • * This class does its best to postpone the very expensive operations
  • * such as the actual loading of the BLOB.
  • */
  • class ImageProxy extends AbstractImage
  • {
  • public function __construct($path)
  • *本5文来源gaodai$ma#com搞$$代**码)网@搞代码gaodaima {
  • $this->_path = $path;
  • list ($this->_width, $this->_height) = getimagesize($path);
  • }
  • /**
  • * Creates a RawImage and exploits its functionalities.
  • */
  • protected function _lazyLoad()
  • {
  • if ($this->_realImage === null) {
  • $this->_realImage = new RawImage($this->_path);
  • }
  • }
  • public function dump()
  • {
  • $this->_lazyLoad();
  • return $this->_realImage->dump();
  • }
  • }
  • /**
  • * Client class that does not use the data dump of the image.
  • * Passing blindly a Proxy to this class and to other Clients makes sense
  • * as the data would be loaded anyway when Image::dump() is called.
  • */
  • class Client
  • {
  • public function tag(Image $img)
  • {
  • return ‘498)this.style.width=498;” span=”” alt=”” />;
  • }
  • }
  • $path = ‘/home/giorgio/shared/Immagini/kiki.png’;
  • $client = new Client();
  • $image = new RawImage($path); // loading of the BLOB takes place
  • echo $client->tag($image), “\n”;
  • $proxy = new ImageProxy($path);
  • echo $client->tag($proxy), “\n”; // loading does not take place even here
  • 以上代码实现了PHP的代理模式。简单来讲,代理模式就是为其他对象提供一个代理以控制对这个对象的访问。

    关于设计模式的其他方面

    我们知道了什么是设计模式以及PHP设计模式中的代理模式。这里还有一些关于设计模式的基本概念应该被熟知。

    ◆算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

    ◆面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。

    ◆设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

    ◆并非所有的软件模式都是设计模式,设计模式特指软件设计层次上的问题。还有其它非设计模式的模式,如架构模式。

    我们会在下周继续为您连载《PHP设计模式漫谈》,敬请期待。


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:PHP设计模式漫谈之代理模式_PHP

    喜欢 (0)
    [搞代码]
    分享 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址