日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

《PHP設(shè)計模式介紹》第三章 工廠模式_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:《PHP設(shè)計模式介紹》第二章 值對象模式
在所有的最簡單的程序中,大多數(shù)對象都有一個標識,一個重要的商業(yè)應(yīng)用對象,例如一個Customer或者一個SKU,有一個或者更多的屬性---id,name,email地址,這樣可以把它從同一個類的其他實例區(qū)分開

在面向?qū)ο缶幊讨? 最通常的方法是一個new操作符產(chǎn)生一個對象實例,new操作符就是用來構(gòu)造對象實例的。但是在一些情況下, new操作符直接生成對象會帶來一些問題。舉例來說, 許多類型對象的創(chuàng)造需要一系列的步驟: 你可能需要計算或取得對象的初始設(shè)置; 選擇生成哪個子對象實例; 或在生成你需要的對象之前必須先生成一些輔助功能的對象。 在這些情況, 新對象的建立就是一個 “過程”,不僅是一個操作,像一部大機器中的一個齒輪傳動。

問題

你如何能輕松方便地建立這么" 復(fù)雜 " 的對象即操作中不需要粘貼復(fù)制呢?

解決方法

建立一個工廠(一個函數(shù)或一個類方法)來制造新的對象。為了理解工廠的用處, 試想以下的不同之處……

代碼

$connection =& new MySqlConnection($user, $password, $database);

……使你的代碼可擴展和更簡潔……

$connection =& create_connection();

后者的代碼片斷集中在和數(shù)據(jù)庫連接的create_connect()工廠上 ,就像剛才說的一樣,使創(chuàng)造數(shù)據(jù)庫連接的過程成為一個簡單的操作—就像new操作一樣。工廠模式的優(yōu)點就在創(chuàng)建對象上。 它的任務(wù)就是把對象的創(chuàng)建過程都封裝起來,然后返回一個所需要的新類。

想改變對象的結(jié)構(gòu)和建立對象的方式嗎? 你只需選擇對象工廠,對代碼的改變只需要一次就夠了。( 工廠模式的功能是如此強大, 它處于是應(yīng)用的底層, 所以在許多其余的復(fù)雜模式和應(yīng)用中它會不停地出現(xiàn)。)

樣本代碼

工廠模式封裝了對象的建立過程。 你可以在對象本身創(chuàng)建對象工廠或者是一個額外的工廠類——這要看你具體的應(yīng)用。讓我們看一個工廠對象的例子。

我們發(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)一定義并對他們進行賦值,顯然這種做法不是很妥當(dāng):

  1. 你可以輕松地改變連接數(shù)據(jù)庫的參數(shù),但你不能增加或改變這些參數(shù)地順序,除非你把所有連接代碼都改了。
  2. 你不能輕松的實例化一個新類去連接另一種數(shù)據(jù)庫,比如說PostgresqlConnection。
  3. 這樣很難單獨測試和證實連接對象的狀態(tài)。

使用工廠設(shè)計模式,代碼將得到很大的改進:

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()方法上。

分享:《PHP設(shè)計模式介紹》第一章 編程慣用法
學(xué)習(xí)一門新的語言意味著要采用新的慣用法。這章將介紹或者可能重新強調(diào)一些慣用法。你會發(fā)現(xiàn)這些慣用法在你要在代碼中實現(xiàn)設(shè)計模式時候是非常有用的。 在這里總結(jié)的許多編程慣用法都是很值得

共8頁上一頁12345678下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程