PHP簡單工廠模式 工廠方法模式和抽象工廠模式

2021-09-08 10:47:27 字數 2525 閱讀 1805

php工廠模式概念:工廠模式是一種類,它具有為您建立物件的某些方法。您可以使用工廠類建立物件,而不直接使用 new。這樣,如果您想要更改所建立的物件型別,只需更改該工廠即可。使用該工廠的所有**會自動更改。

根據抽象程度不同,php工廠模式分為:簡單工廠模式、工廠方法模式和抽象工廠模式

簡單工廠模式:

/*

* *簡單工廠模式與工廠方法模式比較。

*簡單工廠又叫靜態工廠方法模式,這樣理解可以確定,簡單工廠模式是通過乙個靜態方法建立物件的。 */

inte***ce

people

class man implements

people} 

class women implements

people } 

class

******factoty

static

function

createwomen()

} $man = ******factoty::createman();

$man->jiehun();

$man = ******factoty::createwomen();

$man->jiehun();

工廠方法模式:

<?php

/**工廠方法模式:

*定義乙個建立物件的介面,讓子類決定哪個類例項化。 他可以解決簡單工廠模式中的封閉開放原則問題。

*/inte***ce

people

class man implements

people} 

class women implements

people } 

inte***ce createman

class factoryman implements

createman

}class factorywomen implements

createman } 

class

client } 

$f = new

client;

$f->test();

抽象工廠模式:

<?php

/*注意:這裡和工廠方法的區別是:一系列,而工廠方法則是乙個。

那麼,我們是否就可以想到在介面create裡再增加建立「一系列」物件的方法呢?

*/inte***ce

people

class oman implements

people

}class iman implements

people}

class owomen implements

people }

class iwomen implements

people }

inte***ce createman

class factoryman implements

createman

function

createintro()

}class factorywomen implements

createman

function

createintro() }

class

client }

$f = new

client;

$f->test();

區別:

簡單工廠模式:用來生產同一等級結構中的任意產品。對與增加新的產品,無能為力

工廠模式 :用來生產同一等級結構中的固定產品。(支援增加任意產品)   

抽象工廠 :用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支援增加產品族)  

以上三種工廠 方法在等級結構和產品族這兩個方向上的支援程度不同。所以要根據情況考慮應該使用哪種方法

適用範圍:

簡單工廠模式:

工廠類負責建立的物件較少,客戶只知道傳入工廠類的引數,對於如何建立物件不關心。

工廠方法模式:

當乙個類不知道它所必須建立物件的類或乙個類希望由子類來指定它所建立的物件時,當類將建立物件的職責委託給多個幫助子類中得某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候,可以使用工廠方法模式。

抽象工廠模式:

乙個系統不應當依賴於產品類例項何如被建立,組合和表達的細節,這對於所有形態的工廠模式都是重要的。這個系統有多於乙個的產品族,而系統只消費其 中某一產品族。同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從 而使客戶端不依賴於實現。

無論是簡單工廠模式、工廠模式還是抽象工廠模式,它們本質上都是將不變的部分提取出來,將可變的部分留作介面,以達到最大程度上的復用。究竟用哪種設計模式更適合,這要根據具體的業務需求來決定

簡單工廠模式 工廠方法模式

在實際應用中,我們可以考慮使用封裝 繼承 多型把程式的耦合度降低。1.簡單工廠模式 例子 寫乙個計算器模擬程式 思路 將業務進行封裝,並且進行松耦合,即不同的運算類之間互相不影響,可考慮通過繼承乙個類或者實現乙個介面 類operation,定義計算的統一介面 package smplefactory...

簡單工廠模式 工廠方法模式 抽象工廠模式

簡單工廠模式 簡單工廠模式並不是23種設計模式中的,但是在實際的應用中卻經常使用。uml圖 簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用...

簡單工廠模式 工廠方法模式 抽象工廠模式

b 簡單工廠模式又稱靜態工廠模式 b 下面看 示例 public inte ce robot public class factory catch exception e return null public class test class robota implements robot clas...