设计模式(十一):代理模式

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

在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。

经典例子就是网络代理。

示例代码

主体类 Subject

class Subject {
    public function request() {
        //
    }
}

代理类 Proxy

class Proxy {
    private static $subject;
    public function request() {
        if (is_null(self::$subject)) {
            self::$subject = new Subject();
        }
        $this->preRequest();
        self::$subject->request();
        $this->AfterRequest();
    }
    public function preRequest(){
        //
    }
    public function afterRequest(){
        //
    }
}

测试类 Clienter

$proxy = new Proxy();
$proxy->request();

你可能感兴趣的:(设计模式(十一):代理模式)