国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

解析PHP工廠模式的好處

2020-03-22 17:58:05
字體:
來源:轉載
供稿:網友
顧名思義,工廠是可以加工零件的,PHP程序中的工廠模式也有相同的功能,可以方便的使用一個靜態的工廠方法來實例化某一個類,那么這樣做的好處是什么呢?初學PHP的設計模式,以下是我個人的理解
一般我們實例化一個類會給它一些參數以便在其構析的時候可以根據不同的參數反饋出我們需要的結果。
舉例說明,以下是一個User類,非常簡單:
復制代碼 代碼如下:
?php
interface IUser{
function getName();
function getAge();
}
html' target='_blank'>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教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 思茅市| 辽阳市| 河津市| 红安县| 伽师县| 和政县| 三穗县| 新丰县| 武夷山市| 无锡市| 英德市| 葵青区| 湘乡市| 叙永县| 措勤县| 右玉县| 苏尼特左旗| 通江县| 景泰县| 大同县| 九台市| 福海县| 札达县| 敦化市| 泾源县| 柯坪县| 正镶白旗| 乡城县| 大新县| 康乐县| 铜川市| 榆树市| 鸡西市| 南康市| 博兴县| 尤溪县| 德清县| 武冈市| 扶余县| 永吉县| 江都市|