首页 > Web开发 > 详细

设计模式之代理模式--PHP

时间:2019-02-13 17:06:35      阅读:164      评论:0      收藏:0      [点我收藏+]

代理模式是常用的设计模式之一,代理模式为对象的间接访问提供了一套方案,可以对对象访问进行控制,也能监控对象访问相关的数据信息。

代理模式(Proxy)就是给某一个对象提供代理,在由代理控制原对象的访问。

代理模式的UML图:

技术分享图片

 

下面是代理模式的demo:

 1 <?php
 2 /**
 3  * @desc 代理模式
 4  * Created by PhpStorm.
 5  * User: zzq
 6  * Date: 2019-02-13
 7  * Time: 15:01
 8  */
 9 
10 //定义RealSubject 和 Proxy 共同具备的东西
11 interface Subject{
12     function say();
13     function run();
14 }
15 //代理类
16 class Proxy implements Subject{
17     private $realSubject = null;
18     public function __construct(RealObject $realObject = null){
19         if ( empty($realObject) ) {
20             $this->realSubject = new RealObject();
21         } else {
22             $this->realSubject = $realObject;
23         }
24     }
25 
26     function say(){
27         $this->realSubject->say();
28     }
29 
30     function run(){
31         $this->realSubject->run();
32     }
33 }
34 //真正的实体对象方法
35 class RealObject implements Subject{
36     private $name;
37     public function __construct($name){
38         $this->name = $name;
39     }
40 
41     function say(){
42         echo $this->name."说:我饿了";
43         echo PHP_EOL;
44     }
45 
46     function run(){
47         echo $this->name."吃饱了,去跑步";
48         echo PHP_EOL;
49     }
50 }
51 
52 $subject = new RealObject("李四");
53 $proxy = new Proxy($subject);
54 $proxy->say();
55 $proxy->run();

 demo的执行结果

1 李四说:我饿了
2 李四吃饱了,去跑步

其它帖子有说了很多代理模式的使用场景,如:图片代理、远程代理、虚拟代理、动态代理具体的模式可自行百度。

下面列举代理模式具体的使用场景:

  • 要监控对象的访问次数
  • 要监控对象中方法的访问次数
  • 指定对象的权限控制,可在preRequest方法中去校验权限
  • 执行完指定方法后进入队列,可在afterRequest中去做入列动作

设计模式之代理模式--PHP

原文:https://www.cnblogs.com/zzq919101/p/10370238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!