天天看點

PHP設計模式之——工廠模式

在開發大型系統過程中,往往會出現這樣一種情況:

我有一部分基礎資料,是類classa是從資料庫a讀取出來的,其他很多的功能都是基于這個基礎資料來操作的。現在呢,我想把資料從資料庫a變成從另外的資料源去擷取,這時候,要修改起來就比較麻煩,要修改其他很多類的代碼。這種設計顯然是不夠靈活的,換句話說,就是緊耦合的,系統中某個部分的函數或類嚴重依賴于系統的其他部分中的函數或類的行為和結構。

工廠模式,就是解決這樣的一些情況的設計方法。工廠模式是一種類,建立了一個工廠來根據所需來建立對象,這種方式在多态性程式設計中是很重要的,允許動态替換類,修改配置等。

工廠模式分為:簡單工廠模式、工廠方法模式、抽象工廠模式。

簡單工廠模式,通過靜态方法建立對象。可以了解成,隻負責生産同一等級結構中的任何一個産品,但是不能新增産品。

工廠方法模式,去掉了簡單工廠模式中方法的靜态屬性,使其可以被子類內建,定義一個建立對象的接口,讓子類去決定執行個體化哪個類。可以了解成,用來生産同一等級結構中的固定産品,但是支援增加産品。

抽象工廠模式,提供一個建立一系列相關或者互相依賴的對象的接口。可以了解成,用來生産不用類型的全部産品,但是不能增加新品,支援增加新的類型。

用代碼來一一舉例: