工廠模式的最大優點在於建立物件上面,就是把建立物件的過程封裝起來,這樣隨時可以產生乙個新的物件。
減少**進行複製粘帖,耦合關係重,牽一發動其他部分**。
通俗的說,以前建立乙個物件要使用new
,現在把這個過程封裝起來了。
假設不使用工廠模式:那麼很多地方呼叫類a
,**就會這樣子建立乙個例項:
new a(),
假設某天需要把
a類的名稱修改,意味著很多呼叫的**都要修改。
建立乙個工廠(乙個函式或乙個類方法)來製造新的物件,
它的任務就是把物件的建立過程都封裝起來,
建立物件不是使用new
的形式了。而是定義乙個方法,用於建立物件例項。
工廠方法:
比如你的工廠叫做「香菸工廠」,那麼可以有「七匹狼工廠」「中華工廠」等,但是,這個工廠只生廠一種商品:香菸;
抽象工廠:無法描述它到底生產什麼產品,它生產很多態別的產品(
所以抽象工廠就會生成子工廠)。
你的工廠是綜合型的,是生產「一系列」產品,而不是「乙個」,比如:生產「香菸」,還有「啤酒」等。然後它也可以有派生出來的具體的工廠,但這些工廠都是生產這一系列產
品,只是可能因為地域不一樣,為了適應當地人口味,味道也不太一樣。
工廠模式:理解成只生成一種產品的工廠。比如生產香菸的。
工廠方法:工廠的一種產品生產線 。比如鍵盤的生成過程。
<
php
/**
* 工廠方法模式*
* 定義乙個用於建立物件的介面
,讓子類決定將哪乙個類例項化
,使用乙個類的例項化延遲到其子類*/
/* class dbfactory
} }
*/ class dbfactory
} inte***ce db
class mysqldb implements db
publicfunction connect()
publicfunctionexec() }
class postgredb implements db
publicfunction connect()
publicfunctionexec() }
class mssqldb implements db
publicfunction connect()
publicfunctionexec() }
$omysql= dbfactory::create("mysql");
$opostgre= dbfactory::create("postgre");
$omssql= dbfactory::create("mssql");
php設計模式之工廠模式
一直都對php的設計模式有著一種特殊的 情結 從最開始接觸到的單例模式,到經典的mvc設計模式,每次的接觸都讓我為之驚奇。買了本php設計模式在家看,發現,都是專有名詞,再加上太專業的術語,讓我沒有看下去的勇氣。無意之中逛論壇,發現乙個部落格,關於php的五種設計模式,其中就有工廠模式。看完後,第一...
php模式設計之 工廠模式
那麼何為工廠模式?從名字來看,似乎看不出什麼端倪。工廠模式,和生產有關?還是和生產流程 子了,所謂工廠模式還真和生產有關。生產什麼呢?生產出來的是乙個例項物件。通過什麼裝置生產?通過乙個工廠類生產。怎麼生產呢?工廠類呼叫自身靜態方法 來生產物件例項。工廠模式有乙個關鍵的構造,根據一般原則命名為fac...
php設計模式之工廠模式
在 1994 年,由 erich gamma richard helm ralph johnson 和 john vlissides 四人合著出版了一本名為 design patterns elements of reusable object oriented software 中文譯名 設計模式...