php设计模式之代理模式(Proxy)
发表于:2019-08-16 10:30:25浏览:54次
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。
经典例子就是网络代理,你想访问 Facebook 或者 Twitter ,如何绕过 GFW?找个代理
```
_beforeAction();
if(is_null($this->_real_subject)) {
$this->_real_subject = new RealSubject();
}
$this->_real_subject->action();
$this->_afterAction();
}
private function _beforeAction() {
var_dump("在 ProxySubject->action 前,我想干点啥 ....");
}
private function _afterAction() {
var_dump("在 ProxySubject->action 后,我想干点啥 ....");
}
}
// client
// 在某种情况下,我不想引用RealSubject(真实对象),则ProxySubject(代理对象)可以起到中介代理作用
$subject = new ProxySubject();
$subject->action();
?>
```
输出
```bash
vagrant@vagrant-ubuntu:~$ sudo php proxy.php
string(37) "在 ProxySubject->action 前,我想干点啥 ...."
string(44) "我是 RealSubject类 中的 action() 方法"
string(37) "在 ProxySubject->action 后,我想干点啥 ...."
```

