PHP 代理模式

 

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

 

代理模式中主要角色

抽象主题角色:声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替。

代理主题角色:含有真实主题的引用,从而可以在任何时候操作真实主题,代理主题功过提供和真实主题相同的接口,使它可以随时代替真实主题。代理主题通过持有真实主题的引用,不但可以控制真实主题的创建或删除,可以在真实主题被调用前进行拦截,或在调用后进行某些操作。

真实代理对象:定义了代理角色所代表的具体对象。

 

interface Person{
    public function playGame();
    public function kill();
}

class Gaoshou implements Person {           # 代理主题角色

    public function playGame(){
        echo "我是王者<br/>";
    }

    public function kill(){
        echo "penta kill<br/>";
    }
}


class Proxy  implements Person {              # 代理
    protected $obj;

    public function __construct(Person $obj)
    {
        $this->obj = $obj;
    }

    public function playGame()
    {
        $this->obj->playGame();
    }

    public function kill()
    {
        $this->obj->kill();
    }
}

$obj = new Proxy(new Gaoshou());
$obj->playGame();
$obj->kill();

输出:

我是王者
penta kill

posted on 2017-01-05 16:26  莫小安  阅读(578)  评论(0编辑  收藏  举报

导航