我們在之前跟大家介紹了php工廠模式中的三種,以及什麼是php工廠模式,為什麼要用php工廠模式,那麼我們今天就給大家詳細介紹下關於php工廠模式的使用好處!
一般我們實例化一個類別會給它一些參數以便在其構析的時候可以根據不同的參數回饋出我們需要的結果。
舉例說明,以下是一個User類,非常簡單:
#程式碼如下:
<?php interface 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函數中進行預設值設定來避免這種重複勞動,但事實上從程式碼優雅角度來說這樣很不好,設想我們有一個工廠方法可以透過一個標識來對應一組參數,並把這個參數存放在某個文本文檔或是直接以數組的形式存放在工廠類中,我們在調用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中文網其他相關文章!