您的位置:首页 > 编程语言 > PHP开发

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

2015-04-23 00:20 417 查看

代理模式

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

假设有个老人,他已经不能吃饭,不能睡觉,不能玩耍,这时候我们委托一个人,也就是找一个代理(delegate),将所有的事情交给这个代理去做。

模式中的角色

抽象角色(抽象类或接口):定义真实角色和代理角色所需要实现的方法

真实角色:实现抽象角色中的方法,解决业务逻辑,不需要关心其他职责事务

代理角色:实现抽象角色中的方法,代理真实角色实现业务逻辑,可以附加自己的操作

phpDemo

抽象角色

[code]<?php 
/*
    定义一个接口
*/
interface life {

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

 ?>


真实角色

[code]<?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/> ';
    }
}

?>


代理角色

[code]<?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();
    }

}


测试代码

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


总结

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

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

高扩展性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: