定义:
代理模式(Proxy):在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节。
结构:
- Subject:subject 类,定义了 RealSubject 和 Proxy 的共用接口,这样就在任何使用 RealSubject的地方都可以使用 Proxy。
- RealSubject:RealSubject 类,定义 Proxy 所代表的真实实体。
- Proxy:实现Subject 接口并在内部引用了 RealSubject。
- Client:客户端代码。
代码实例:
- /**
- * Subject.php
- * Interface Subject
- */
- interface Subject
- {
- public function request();
- }
- /**
- * RealSubject.php
- * Class RealSubject
- */
- class RealSubject implements Subject
- {
- /**
- * 真实请求方法具体实现
- */
- public function request()
- {
- // TODO: Implement request() method.
- echo "真实的请求<br/>\n";
- }
- }
- /**
- * Proxy.php
- * Class Proxy
- */
- class Proxy implements Subject
- {
- /**
- * @var RealSubject
- */
- protected $realSubject;
- /**
- * Proxy constructor.
- */
- public function __construct()
- {
- $this->realSubject = new RealSubject();
- }
- /**
- * 调用真实请求方法
- */
- public function request()
- {
- // TODO: Implement request() method.
- $this->realSubject->request();
- }
- }
客户端调用:
- $proxy = new Proxy();
- $proxy->request();