PHP設計模式之工廠模式

2022-05-08 07:00:09 字數 1331 閱讀 4682

工廠模式(factory pattern)和單例模式一樣,是另外一種建立型模式。

和單例模式不同的是,單例模式會建立和管理乙個單獨的型別的單一物件,工廠模式則是用於建立多種不同型別的類的多個物件。

簡單的工廠模式由三部分組成:

抽象基類:類中定義抽象一些方法,用以在子類中實現;

繼承自抽象基類的子類:實現基類中的抽象方法;

工廠類:用以例項化物件。

下面來一步步實現乙個簡單的工廠模式程式。

首先要定義乙個抽象基類:

//

定義抽象基類

abstract

class

people

增加多個基類的實現:

class coder extends

people

class teacher extends

people

class cook extends

people

定義工廠類,用於實現建立不同物件的需求:

//

工廠類class

factory

}

現在,可以執行**試試:

$p = factory::createinstance("teacher");

$p->work();

//程式輸出:老師的工作是教書育人

$m = factory::createinstance("coder");

$m->work();

//程式輸出:程式設計師的工作是寫**

$w = factory::createinstance("cook");

$w->work();

//程式輸出:廚師的工作是做美味的菜餚

或者,可以這樣修改基類:

//

定義抽象基類

abstract

class

people

/*######################################

*/}

此時,可以這樣建立物件:

$p = people::createinstance("teacher");

$p->work();

//程式輸出:老師的工作是教書育人

優點:降低了程式的耦合度,方便日後的維護及擴充套件。

使用場景:

1.當程式編寫的時候,並不能確定在生成物件的時候其確切的物件型別,只有到程式執行的時候才會確定。

2.在不確定會有多少個處理操作的時候,如針對接收到的資料,處理的邏輯可能會不同,可能以後還會增加新的操作。 

php設計模式之工廠模式

一直都對php的設計模式有著一種特殊的 情結 從最開始接觸到的單例模式,到經典的mvc設計模式,每次的接觸都讓我為之驚奇。買了本php設計模式在家看,發現,都是專有名詞,再加上太專業的術語,讓我沒有看下去的勇氣。無意之中逛論壇,發現乙個部落格,關於php的五種設計模式,其中就有工廠模式。看完後,第一...

php設計模式之工廠模式

工廠模式的最大優點在於建立物件上面,就是把建立物件的過程封裝起來,這樣隨時可以產生乙個新的物件。減少 進行複製粘帖,耦合關係重,牽一發動其他部分 通俗的說,以前建立乙個物件要使用new 現在把這個過程封裝起來了。假設不使用工廠模式 那麼很多地方呼叫類a 就會這樣子建立乙個例項 new a 假設某天需...

php模式設計之 工廠模式

那麼何為工廠模式?從名字來看,似乎看不出什麼端倪。工廠模式,和生產有關?還是和生產流程 子了,所謂工廠模式還真和生產有關。生產什麼呢?生產出來的是乙個例項物件。通過什麼裝置生產?通過乙個工廠類生產。怎麼生產呢?工廠類呼叫自身靜態方法 來生產物件例項。工廠模式有乙個關鍵的構造,根據一般原則命名為fac...