PHP設計模式--原型模式

來源:互聯網
上載者:User
聲明:本系列部落格參考資料《大話設計模式》,作者程傑。

用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。Prototype模式允許一個對象再建立另外一個可定製的對象,根本無需知道任何如何建立的細節,通過將一個原型對象傳給那個要發動建立的對象,這個要發動建立的對象通過請求原型對象拷貝它們自己來實施建立。它主要面對的問題是:“某些結構複雜的對象”的建立工作;由於需求的變化,這些對象經常面臨著劇烈的變化,但是他們卻擁有比較穩定一致的介面。


在php中,類已經實現了原型模式,php有個魔術方法__clone()方法,會複製出一個這樣的對象。

看一下UML類圖:


角色分析:

1.抽象原型,提供了一個複製的介面

2.具體的原型,實現複製的介面


具體的代碼:

/**抽象原型類 * Class Prototype */abstract class Prototype{   abstract function cloned();}/**具體原型類 * Class Plane */class Plane extends Prototype{    public $color;    function Fly()    {        echo "飛機飛啊飛!
"; } function cloned() { return clone $this; }}

用戶端測試代碼:

header("Content-Type:text/html;charset=utf-8");//------------------------原型模式測試代碼------------------require_once "./Prototype/Prototype.php";$plane1=new Plane();$plane1->color="Blue";$plane2=$plane1->cloned();$plane1->Fly();$plane2->Fly();echo "plane1的顏色為:{$plane1->color}
";echo "plane2的顏色為:{$plane2->color}
";

這裡只是介紹一下原型模式的核心思想,其實在實際開發中直接clone即可。


PHP物件導向設計模式

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.