關於使用php原廠模式的好處分析

來源:互聯網
上載者:User
我們在之前給大家介紹了php原廠模式中的三種,以及什麼是php原廠模式,為什麼要用php原廠模式,那麼我們今天就給大家詳細介紹下關於php原廠模式的使用好處!

一般我們執行個體化一個類會給它一些參數以便在其構析的時候可以根據不同的參數反饋出我們需要的結果。
舉例說明,以下是一個User類,非常簡單:

代碼如下:

<?phpinterface IUser{   function getName();   function getAge();}class User implements IUser{   protected $_name;   protected $_age;   function construct($name, $age){      $this->_name = $name;      $this->_age = (int)$age;   }   function getName(){      return $this->_name;   }  function getAge(){      return $this->_age;   }}?>

我們如果要執行個體化這個類就要這樣:
$u = new User(‘小明‘,19);
一般如果這個類很少使用,那麼這樣做沒什麼太大影響,也非常好。
突然我想給這個類增加一個歸類,把小明放入學生組,修改下類代碼實現非常容易,但如果這個類在我們想修改之前在很多檔案地方多次的執行個體化了,那麼想為其增加一個參數就會變的非常煩瑣,因為需要替換成:
$u = new User(‘小明‘,19,‘學生‘);
當然我們也可以通過在construct函數中進行預設值設定來避免這種重複勞動,但事實上從代碼優雅角度來說這樣很不好,設想我們有一個Factory 方法可以通過一個標識來對應一組參數,並把這個參數存放在某個文字文件或是直接以數組的形式存放在工廠類中,我們在調用User類的時候就會變的輕鬆許多,即便是需要增減參數屬性也不需要到處進行代碼的替換,下面就是一個工廠類(也可以直接將方法存放在User類)

代碼如下:

interface IUser{    function getName();    function getAge();}class User implements IUser{   protected $_group;   protected $_name;   protected $_age;  function construct($name, $age, $group){      $this->_group = $group;      $this->_name = $name;      $this->_age = (int)$age;  }  function getName(){     return $this->_name;  }  function getAge(){      return $this->_age;  }}class Fuser{   private static $group = array(       array(‘小明‘,19,‘學生‘),       array(‘小王‘,19,‘學生‘)   );   static function create($id){      list($name, $age, $group) = self::$group[(int)$id];      return new User($name, $age, $group);   }}echo Fuser::create(0)->getName();

得到的結果應該是輸出“小明”。

總結:

相信小夥伴們對php原廠模式的使用好處有了一定的理解,可以根據本文所學的東西,實踐在自己的工作中!

相關推薦:

三種php原廠模式的簡單介紹


什麼是php原廠模式?為何要用php原廠模式?


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.