说到代理这个词,首先想到的是梯子,它帮助我们解决了网络问题,但是怎么处理的,我们不关心,因为这对大多数人来说属于相对生疏的专业领域。那么代理模式也是一样的道理:为其他对象提供一种代理以控制对这个对象的访问,并允许在将请求提交给对象前后进行一些处理。
按照惯例,来个🌰:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| interface RequestInterface { public function getRequest();
}
class Request implements RequestInterface{
public function getRequest() { echo 'get request', PHP_EOL; } }
class Proxy implements RequestInterface {
protected Request $request;
public function __construct() { $this->request = new Request(); }
public function getRequest() { echo 'add log in proxy', PHP_EOL; $this->request->getRequest(); } }
$proxy = new Proxy(); $proxy->getRequest();
|
代理模式和适配器模式的区别:
- 适配器模式是为了改变和适配代理类的接口
- 代理模式不改变所代理类接口。
代理模式和装饰模式的区别:
- 装饰模式是为了增强功能
- 代理模式是为了加以控制