PHP设计模式—代理模式

时间:2020-10-20 14:59:00 来源:互联网 作者: 神秘的大神 字体:

 

定义:

代理模式(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();