代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它允许代理对象控制对其它对象的访问。代理对象通常充当客户端与实际对象之间的中介,以隐藏实际对象的复杂性。

在PHP中实现代理模式,可以使用以下代码示例:

interface Subject {
    public function request();
}
class RealSubject implements Subject {
    public function request() {
        echo "RealSubject: Handling request.\n";
    }
}
class Proxy implements Subject {
    private $realSubject;
    public function __construct(RealSubject $realSubject) {
        $this->realSubject = $realSubject;
    }
    public function request() {
        if ($this->checkAccess()) {
            $this->realSubject->request();
            $this->logAccess();
        }
    }
    private function checkAccess() {
        echo "Proxy: Checking access prior to firing a real request.\n";
        return true;
    }
    private function logAccess() {
        echo "Proxy: Logging the time of request.\n";
    }
}
$client = new Proxy(new RealSubject());
$client->request();

在上面的代码中,我们定义了一个Subject接口,以及一个实现了Subject接口的RealSubject类。

然后我们创建了一个代理类Proxy,它也实现了Subject接口,并在构造函数中接收一个RealSubject对象作为参数。Proxy类中的request()方法首先调用了checkAccess()方法,以检查是否有权限访问实际对象。如果有权限,它会调用实际对象的request()方法,并在最后调用logAccess()方法来记录访问时间。


最后,我们创建了一个客户端对象$client,并将其包装在一个代理对象中。当我们调用$client->request()方法时,它实际上是通过代理对象调用了实际对象的request()方法,同时还进行了额外的权限检查和日志记录。

评论

0 条评论