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

首頁 > 編程 > PHP > 正文

php教程:php設(shè)計(jì)模式介紹之工廠模式

2020-03-24 17:11:20
字體:
供稿:網(wǎng)友
上文:《PHP設(shè)計(jì)模式介紹》第二章 值對(duì)象模式《PHP設(shè)計(jì)模式介紹》第三章 工廠模式在html' target='_blank'>面向?qū)ο?/u>編程中, 最通常的方法是一個(gè)new操作符產(chǎn)生一個(gè)對(duì)象實(shí)例,new操作符就是用來構(gòu)造對(duì)象實(shí)例的。但是在一些情況下, new操作符直接生成對(duì)象會(huì)帶來一些問題。舉例來說, 許多類型對(duì)象的創(chuàng)造需要一系列的步驟: 你可能需要計(jì)算或取得對(duì)象的初始設(shè)置; 選擇生成哪個(gè)子對(duì)象實(shí)例; 或在生成你需要的對(duì)象之前必須先生成一些輔助功能的對(duì)象。 在這些情況, 新對(duì)象的建立就是一個(gè) 過程 ,不僅是一個(gè)操作,像一部大機(jī)器中的一個(gè)齒輪傳動(dòng)。問題你如何能輕松方便地建立這么 復(fù)雜 的對(duì)象即操作中不需要粘貼復(fù)制呢?解決方法建立一個(gè)工廠(一個(gè)函數(shù)或一個(gè)類方法)來制造新的對(duì)象。為了理解工廠的用處, 試想以下的不同之處 代碼:$connection = new MySqlConnection($user, $password, $database); 使你的代碼可擴(kuò)展和更簡(jiǎn)潔 $connection = create_connection();后者的代碼片斷集中在和數(shù)據(jù)庫連接的create_connect()工廠上 ,就像剛才說的一樣,使創(chuàng)造數(shù)據(jù)庫連接的過程成為一個(gè)簡(jiǎn)單的操作 就像new操作一樣。工廠模式的優(yōu)點(diǎn)就在創(chuàng)建對(duì)象上。 它的任務(wù)就是把對(duì)象的創(chuàng)建過程都封裝起來,然后返回一個(gè)所需要的新類。想改變對(duì)象的結(jié)構(gòu)和建立對(duì)象的方式嗎? 你只需選擇對(duì)象工廠,對(duì)代碼的改變只需要一次就夠了。( 工廠模式的功能是如此強(qiáng)大, 它處于是應(yīng)用的底層, 所以在許多其余的復(fù)雜模式和應(yīng)用中它會(huì)不停地出現(xiàn)。)樣本代碼工廠模式封裝了對(duì)象的建立過程。 你可以在對(duì)象本身創(chuàng)建對(duì)象工廠或者是一個(gè)額外的工廠類 這要看你具體的應(yīng)用。讓我們看一個(gè)工廠對(duì)象的例子。我們發(fā)現(xiàn)下面代碼中,數(shù)據(jù)庫連接的那部分屢次出現(xiàn):// PHP4
class Product {
function getList() { $db = new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
function getByName($name) { $db = new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
//...
}為什么這樣做不好? 數(shù)據(jù)庫連接的參數(shù)出現(xiàn)的地方太多了,當(dāng)你把這些參數(shù)設(shè)成常量,意味著你統(tǒng)一定義并對(duì)他們進(jìn)行賦值,顯然這種做法不是很妥當(dāng):
你可以輕松地改變連接數(shù)據(jù)庫的參數(shù),但你不能增加或改變這些參數(shù)地順序,除非你把所有連接代碼都改了。
使用工廠設(shè)計(jì)模式,代碼將得到很大的改進(jìn):class Product {
function getList() {
$db = $this- _getConnection();
//...
}
function _getConnection() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME);
}
}先前的類中存在很多調(diào)用new MysqlConnection(DB_USER, DB_PW, DB_NAME)的方法,現(xiàn)在都被集中到的_getConnection()方法上。html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大竹县| 康定县| 江川县| 湄潭县| 冀州市| 台江县| 嘉善县| 兰州市| 万全县| 抚远县| 南昌市| 寿光市| 城固县| 兴安县| 德昌县| 永靖县| 庆阳市| 虞城县| 廊坊市| 宁津县| 丰镇市| 安顺市| 报价| 宣恩县| 镶黄旗| 南靖县| 凭祥市| 克拉玛依市| 阿合奇县| 五原县| 紫云| 台北县| 广宗县| 克什克腾旗| 深泽县| 和田市| 四平市| 商河县| 石首市| 常宁市| 微山县|