php设计模式之———代理模式

代理模式

为其他对象提供一种代理以控制对这个对象的访问。
假设有个老人,他已经不能吃饭,不能睡觉,不能玩耍,这时候我们委托一个人,也就是找一个代理(delegate),将所有的事情交给这个代理去做。

模式中的角色

  • 抽象角色(抽象类或接口):定义真实角色和代理角色所需要实现的方法
  • 真实角色:实现抽象角色中的方法,解决业务逻辑,不需要关心其他职责事务
  • 代理角色:实现抽象角色中的方法,代理真实角色实现业务逻辑,可以附加自己的操作

phpDemo

抽象角色
<?php 
/*
    定义一个接口
*/
interface life {

     function eat();
     function run();
     function sleep();
}

 ?>
真实角色
<?php 


/*
    真实角色
 */
class user implements life {



    public function run()
    {   
        echo __CLASS__.'  run<br/> ';
    }

    public function eat()
    {   

        echo __CLASS__.'  eat<br/> ';
    }

    public function sleep()
    {   
        echo __CLASS__.'  sleep<br/> ';
    }
}



?>
代理角色
<?php 
/*
    代理角色
 */
class delegate implements life {

    private $old_man;
    //实现抽象角色的所有方法

    public function __construct()
    {
        $this->old_man = new user();
    }
    public function run()
    {   
        $this->old_man->run();

    }

    public function eat()
    {   
        $this->old_man->eat();
    }

    public function sleep()
    {   
        $this->old_man->sleep();
    }

}

测试代码

    $delegate = new delegate();
    $delegate->run();
    $delegate->eat();
    $delegate->sleep();
    //输出:user run   user eat    user sleep

总结

  • 职责清晰,真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。

  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的作用。

  • 高扩展性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值