• 设计模式之代理模式


    代理模式:为其他对象提供一种代理以控制对这个对象的访问

    使用场合:

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

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

    (3)安全代理:用来控制真实对象访问时的权限。

    (4)智能指引:是指调用真实的对象时,代理处理另外一些事。

     优势:

    (1)降低系统耦合度

    (2)保护代理可以控制对真实对象的使用权限。

    (3)实现代理模式需要额外的工作,有些代理模式的实现 非常复杂。

    案例:

     1 <?php
     2 header("Content-type:text/html;Charset=utf-8");
     3 
     4 //定义RealSubject和Proxy共同具备的东西
     5 interface Subject{
     6     function say();
     7     function run();
     8 }
     9 
    10 class RealSubject implements Subject{
    11     private $name;
    12 
    13     function __construct($name){
    14         $this->name = $name;
    15     }
    16 
    17     function say(){
    18         echo $this->name."在吃饭<br>";
    19     }
    20     function run(){
    21         echo $this->name."在跑步<br>";
    22     }
    23 }
    24 class Proxy implements Subject{
    25     private $realSubject = null;
    26     function __construct(RealSubject $realSubject = null){
    27         if(empty($realSubject)){
    28             $this->realSubject = new RealSubject();
    29         }else{
    30             $this->realSubject = $realSubject;
    31         }
    32     }
    33     function say(){
    34         $this->realSubject->say();
    35     }
    36     function run(){
    37         $this->realSubject->run();
    38     }
    39 }
    40 
    41 //测试
    42 $subject = new RealSubject("张三");
    43 $proxy = new Proxy($subject);
    44 $proxy->say();
    45 $proxy->run();
    46 /*
    47 张三在吃饭
    48 张三在跑步
    49 */
    50 ?>
  • 相关阅读:
    Thinkphp回顾(五)之前台模板中的基本语法
    Thinkphp回顾之(四)查询方法深入学习
    Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
    Thinkphp学习回顾(二)之config.php的配置
    Thinkphp学习回顾(一)之基本结构目录
    端口
    curl put delete post get请求类型参数
    xshell连接virtualbox下的linux系统
    实现jsonp的三种方式
    匹配汉字
  • 原文地址:https://www.cnblogs.com/wawjandcsws/p/10984151.html
Copyright © 2020-2023  润新知