PHP設計模式之Factory 方法

來源:互聯網
上載者:User
這篇文章介紹的內容是關於PHP設計模式之Factory 方法 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

今天著重學習了一下Factory 方法(FactoryMethod)這一設計模式,以下是自己的一些學習心得和體會,做一個記錄:

Factory 方法屬於23種模式中的建立型模式之一,由於之前對簡單工廠有過一些瞭解,而Factory 方法是簡單工廠的一種演變,從簡單工廠中可以看出,一個與用戶端互動的類裡面要承擔多個不同類的建立,是一個相當累的過程,而Factory 方法就是在其基礎上將這個互動類進行拆分,讓各個類可以獨立建立,以便於水平擴充。

以建立遊戲角色為例:

<?php           /** Hero   *  英雄介面   */    interface Hero  {      function Create();   }    /** GuanYu 關羽   *  具體英雄類   */   Class GuanYu implements Hero  {       function Create()      {         echo "關羽加入戰場。。。<br/>";      }  }    /** ZhangFei 張飛  *  具體英雄類   */   Class ZhangFei implements Hero  {      function Create()      {         echo "張飛加入戰場。。。<br/>";      }   }      /** FactoryMethod   *  Factory 方法介面   */  interface FactoryMethod  {      function CreateHero();  }    /** GuanYuFactory   *  關羽工廠類    */  Class GuanYuFactory implements FactoryMethod  {      function CreateHero()      {          return new GuanYu();      }   }    /** ZhangFeiFactory   *  張飛工廠類   */  Class ZhangFeiFactory implements FactoryMethod  {      function CreateHero()      {          return new ZhangFei();      }   }
<?php  // 工廠方式 用戶端 index.php  header("Content-Type:text/html;charset=utf-8");    require_once "FactoryMethod.php";    // 各自調用各自的Factory 方法進行建立  $GYF = new GuanyuFactory();  $ZFF = new ZhangFeiFactory();    // 調用各自Factory 方法的建立英雄方法  $GuanYu = $GYF->CreateHero();  $ZhangFei = $ZFF->CreateHero();    // 調用各自建立英雄方法  $GuanYu->Create();  $ZhangFei->Create();
相關文章

聯繫我們

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