您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)PHP工廠(chǎng)模式的好處有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
顧名思義,工廠(chǎng)是可以加工零件的,PHP程序中的工廠(chǎng)模式也有相同的功能,可以方便的使用一個(gè)靜態(tài)的工廠(chǎng)方法來(lái)實(shí)例化某一個(gè)類(lèi),那么這樣做的好處是什么呢?初學(xué)PHP的設(shè)計(jì)模式,以下是我個(gè)人的理解
一般我們實(shí)例化一個(gè)類(lèi)會(huì)給它一些參數(shù)以便在其構(gòu)析的時(shí)候可以根據(jù)不同的參數(shù)反饋出我們需要的結(jié)果。
舉例說(shuō)明,以下是一個(gè)User類(lèi),非常簡(jiǎn)單:
復(fù)制代碼 代碼如下:
<?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;
}
}
?>
我們?nèi)绻獙?shí)例化這個(gè)類(lèi)就要這樣:
$u = new User(‘小明‘,19);
一般如果這個(gè)類(lèi)很少使用,那么這樣做沒(méi)什么太大影響,也非常好。
突然我想給這個(gè)類(lèi)增加一個(gè)歸類(lèi),把小明放入學(xué)生組,修改下類(lèi)代碼實(shí)現(xiàn)非常容易,但如果這個(gè)類(lèi)在我們想修改之前在很多文件地方多次的實(shí)例化了,那么想為其增加一個(gè)參數(shù)就會(huì)變的非常煩瑣,因?yàn)樾枰鎿Q成:
$u = new User(‘小明‘,19,‘學(xué)生‘);
當(dāng)然我們也可以通過(guò)在__construct函數(shù)中進(jìn)行默認(rèn)值設(shè)置來(lái)避免這種重復(fù)勞動(dòng),但事實(shí)上從代碼優(yōu)雅角度來(lái)說(shuō)這樣很不好,設(shè)想我們有一個(gè)工廠(chǎng)方法可以通過(guò)一個(gè)標(biāo)識(shí)來(lái)對(duì)應(yīng)一組參數(shù),并把這個(gè)參數(shù)存放在某個(gè)文本文檔或是直接以數(shù)組的形式存放在工廠(chǎng)類(lèi)中,我們?cè)谡{(diào)用User類(lèi)的時(shí)候就會(huì)變的輕松許多,即便是需要增減參數(shù)屬性也不需要到處進(jìn)行代碼的替換,下面就是一個(gè)工廠(chǎng)類(lèi)(也可以直接將方法存放在User類(lèi))
復(fù)制代碼 代碼如下:
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,‘學(xué)生‘),
array(‘小王‘,19,‘學(xué)生‘)
);
static function create($id){
list($name, $age, $group) = self::$group[(int)$id];
return new User($name, $age, $group);
}
}
echo Fuser::create(0)->getName();
關(guān)于PHP工廠(chǎng)模式的好處有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。