php模式設計之 工廠模式

2021-07-05 14:55:44 字數 1531 閱讀 4373

那麼何為工廠模式?

從名字來看,似乎看不出什麼端倪。工廠模式,和生產有關?還是和生產流程

子了,所謂工廠模式還真和生產有關。生產什麼呢?生產出來的是乙個例項物件。

通過什麼裝置生產?通過乙個工廠類生產。怎麼生產呢?工廠類呼叫自身靜態方法

來生產物件例項。

工廠模式有乙個關鍵的構造,根據一般原則命名為factory的靜態方法,然

而這只是一種原則,雖然工廠方法可以任意命名這個靜態還可以接受任意資料

的引數,必須返回乙個物件。

為什麼要用工廠模式?

很多沒接觸過工廠模式的人會不禁問,為啥我要費那麼大的勁兒去構造工廠類

單的問題。如果專案中,我們通過乙個類建立物件。在快完成或者已經完成,要擴

展功能的時候,發現原來的類類名不是很合適或者發現類需要新增構造函式引數才

能實現功能擴充套件。我靠!我都通過這個類建立了一大堆物件例項了啊,難道我還要

乙個乙個去改不成?我們現在才感受到了「高內聚低耦合」的博大精深。沒問題,工

廠方法可以解決這個問題。

再考慮一下,我要連線資料庫,在php裡面就有好幾種方法,mysql擴充套件

情況而定嘍。既然你們都是連線資料庫的操作,你們就應該擁有相同的功能,建立

連線,查詢,斷開連線...(此處顯示介面的重要性)。總而言之,這幾種方法應

該「團結一致,一致對外」。如何實現呢?利用工廠模式。

工廠模式如何實現?

相對於單例模式,上面我們提供了足夠的資訊,工廠類,工廠類裡面的靜態方

二個問題,根據工廠類靜態方法的引數,我們簡單做個判斷就好了。管你用

if..else..還是switch..case..,能快速高效完成判斷該建立哪個類的工作

就好了。最後,一定要記得,工廠類靜態方法返回乙個物件。不是兩個,更不是三

個。  基本的工廠類:

複製**

//要建立物件例項的類

class

myobject

//工廠類

class

myfactory

}$instance=myfactory::factory();

複製**

乙個稍微複雜的工廠模式:

複製**

<?php

inte***ce

transport

class

bu******ments

transport

}class

carimplements

transport

}class

bike

implements

transport

}class

transfactory

}}$transport=transfactory::factory('car');

$transport->go();

複製**

需要工廠靜態方法為factory()的時候,千萬別再傻乎乎的把工廠類命名為

factory了。為啥啊?別忘了同名建構函式的事兒啊~

php設計模式之工廠模式

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

php設計模式之工廠模式

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

php設計模式之工廠模式

在 1994 年,由 erich gamma richard helm ralph johnson 和 john vlissides 四人合著出版了一本名為 design patterns elements of reusable object oriented software 中文譯名 設計模式...