PHP設計模式——代理模式_PHP教程

來源:互聯網
上載者:User

PHP設計模式——代理模式


聲明:本系列部落格參考資料《大話設計模式》,作者程傑。

代理模式為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在用戶端和目標對象之間起到中介的作用。

UML類圖:

角色介紹:

抽象主題角色(IGiveGift):定義了Follower和Proxy公用介面,這樣就在任何使用Follower的地方都可以使用Proxy。

主題角色(Follower):定義了Proxy所代表的真實實體。

代理對象(Proxy):儲存一個引用使得代理可以訪問實體,並提供一個與Follower介面相同的介面,這樣代理可以用來代替實體(Follower)。

代碼實現:

girlName=$name;    }    function giveRose()    {        echo "{$this->girlName}:這是我送你的玫瑰,望你能喜歡。";    }    function giveChocolate()    {        echo "{$this->girlName}:這是我送你的巧克力,望你能收下。";    }}/**代理 * Class Proxy */class Proxy implements IGiveGift{    private $follower;    function __construct($name='Girl')    {        $this->follower=new Follower($name);    }    function giveRose()    {        $this->follower->giveRose();    }    function giveChocolate()    {        $this->follower->giveChocolate();    }}

用戶端代碼:

header("Content-Type:text/html;charset=utf-8");//------------------------代理模式測試代碼------------------require_once "./Proxy/Proxy.php";$proxy=new Proxy('範冰冰');$proxy->giveRose();$proxy->giveChocolate();

優點:

1、職責清晰

真實的角色就是實現實際的商務邏輯,不用關心其他非本職責的事務,通過後期的代理完成一件完成事務,附帶的結果就是編程簡潔清晰。

2、代理對象可以在用戶端和目標對象之間起到中介的作用,這樣起到了中介和保護了目標對象的作用。

3、高擴充性

適用情境:

1) 遠程代理(Remote Proxy)為一個位於不同的地址空間的對象提供一個本地的代理對象。

這個不同的地址空間可以是在同一台主機中,也可是在另一台主機中,遠程代理又叫做大使(Ambassador)
2) 虛擬代理(Virtual Proxy)根據需要建立開銷很大的對象。

如果需要建立一個資源消耗較大的對象,先建立一個消耗相對較小的對象來表示,真實對象只在需要時才會被真正建立。
3) 保護代理(Protection Proxy)控制對原始對象的訪問。

保護代理用於對象應該有不同的存取權限的時候。
4) 智能指引(Smart Reference)取代了簡單的指標,它在訪問對象時執行一些附加操作。
5) Copy-on-Write代理:它是虛擬代理的一種,把複製(複製)操作延遲到只有在用戶端真正需要時才執行。

一般來說,對象的深複製是一個開銷較大的操作,Copy-on-Write代理可以讓這個操作延遲,只有對象被用到的時候才被複製。

PHP物件導向設計模式

http://www.bkjia.com/PHPjc/1000541.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1000541.htmlTechArticlePHP設計模式——代理模式 聲明:本系列部落格參考資料《大話設計模式》,作者程傑。 代理模式為其他對象提供一種代理以控制對這個對象...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.