問題
你如何能輕鬆方便地建立這麼" 複雜 "&n程式設計客棧bsp;的物件即操作中不需要貼上複製呢?
解決方法
建立乙個工廠(乙個函式或乙個類方法)來製造新的物件。為了理解工廠的用處, 試想以下的不同之處……
**:
複製** **如下:
$connection =& new mysqlconnection($user, $password, $database);
……使你的**可擴充套件和更簡潔……
複製** **如下:
$connection =& create_connection();
後者的**片斷集中在和資料庫連線的create_connect()工廠上 ,就像剛才說的一樣,使創造資料庫連線的過程成為乙個簡單的操作—就像new操作一樣。工廠模式的優點就在建立物件上。 它的任務就是把物件的建立過程都封裝起來,然後返回乙個所需要的新類。
想改變物件的結構和建立物件的方式嗎? 你只需選擇物件工廠,對**的改變只需要一次就夠了。( 工廠模式的功能是如此強大, 它處於是應用的底層, 所以在許多其餘的複雜模式和應用中程式設計客棧它會不停地出現。)
樣本**
工廠模式封裝了物件的建立過程。 你可以在物件本身建立物件工廠或者是乙個額外的工廠類——這要看你具體的應用。讓我們看乙個工廠物件的例子。
我們發現下面**中,資料庫連線的那部分屢iilfbpcyrd次出現:
複製** **如下:
// php4
class product
function getbyname($name)
//...
} 為什麼這樣做不好? 資料庫連線的引數出現的地方太多了,當你把這些引數設成常量,意味著你統一定義並對他們進行賦值,顯然這種做法不是很妥當:
你可以輕鬆地改變連線資料庫的引數,但你不能增加或改變這些引數地順序,除非你把所有連線**都改了。
你不能輕鬆的例項化乙個新類去連線另一種資料庫,比如說postgresqlconnection。
這樣很難單獨測試和證實連線物件的狀態。
使用工廠設計模式,**將得到很大的改進:
複製** **如下:
class product
function &_getconnection()
}&nbswww.cppcns.comp;
先前的類中存在很多呼叫new mysqlconnection(db_user, db_pw, db_name)的方法,現在都被集中到的_getconnection()方法上。
本文標題: 介紹php設計模式中的工廠模式
本文位址:
PHP設計模式 工廠模式
使用工廠模式使得在呼叫方法時變得更容易,因為它只有乙個類和乙個方法,若沒有使用工廠模式,則要在呼叫時決定應該呼叫哪個類和哪個方法 使用工廠模式還使得未來對應用程式做改變時更加容易 比如要增加一種形狀的支援,只需要修改工廠類中的create 乙個方法,而沒有使用工廠模式,則要修改呼叫形狀的 塊。定義形...
php設計模式 工廠模式,
1,工廠模式 最大的優點是 建立物件。通俗說,以前建立物件需要使用new,現在工廠模式把這個過程封裝起來了。假設不使用工廠模式 那麼很多地方呼叫類a,就會這樣子建立乙個例項 new a 假設某天需要把a類的名稱修改,意味著很多呼叫的 都要修改。工廠模式 建立乙個工廠 乙個函式,乙個方法 來製造新的物...
PHP設計模式 工廠模式
工廠模式factory method,又稱多型性工廠模式。在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做。該核心類成為乙個抽象工廠角色,僅負責給出具體工廠子類必須實現的介面,而不接觸哪乙個產品類應當被例項化這種細節。1 簡單工廠模式能夠根據外界給定的資訊,決...