抽象工廠模式對同一類產品實現了封裝,上層應用(客戶端)只需呼叫相應的工廠介面來建立具體的產品,無需關心產品是如何建立。
對介面的規範化提供很好的一致性和擴充套件性。
要理解抽象工廠設計模式,需要先了解以下概念。(在之後的**中會體現)
以上的4個角色構成了乙個完整的抽象工廠設計模式舉個栗子:
1、水果工廠這類的工廠(抽象工廠),它應該是生產水果的工廠,所以它有個生產水果方法createfruit(),這個就是抽象工廠給我們的概念(程式設計中理解為介面)。
2、水果工廠又分有很多種,比如生產蘋果的工廠、生產香蕉的工廠等等,這些工廠就是具體工廠。當然了,這些工廠肯定是水果工廠,而且肯定是生產水果的(不然都不好意思叫水果工廠),所以這些工廠都要實現水果工廠(抽象工廠)的生產水果方法createfruit()。
3、既然已經有水果生產出來了,那麼這些水果都有相同的屬性,比如名字、重量、顏色、口感等,這就是我們的抽象產品,定義某類產品的介面。
4、具體的產品(例如蘋果、香蕉)則是抽象工廠的最終產物。
/******抽象工廠******/
/** * 水果類工廠
*/abstract
class
fruitfactory
/******具體工廠******/
//蘋果工廠
class
extends
fruitfactory
}//香蕉工廠
class
bananafactory
extends
fruitfactory
}/******抽象產品******/
/*水果類產品*/
abstract
class
fruit
/******具體產品******/
/*蘋果*/
class
extends
fruit
}/*香蕉*/
class
banana
extends
}/******測試********/
//1、我們來到蘋果工廠
//2、告訴工廠,幫我們造乙個蘋果
//3、我們得到了乙個蘋果,可以使用它
//下面再去香蕉廠
$bananafactory = new bananafactory();
$banana = $bananafactory->createfruit();
$banana->name();//輸出 i am banana
學習php設計模式 php實現抽象工廠模式
抽象工廠模式 abstact factory 是一種常見的軟體設計模式。該模式為乙個產品族提供了統一的建立介面。當需要這個產品族的某一系列的時候,可以為此系列的產品族建立乙個具體的工廠類。一 意圖 抽象工廠模式提供乙個建立一系統相關或相互依賴物件的介面,而無需指定它們具體的類 gof95 二 抽象工...
PHP設計模式 抽象工廠
宣告 本系列部落格參考資料 大話設計模式 作者程杰。前面我們介紹了簡單工廠和工廠方法設計模式,今天我們學習最後乙個工廠 抽象工廠。案例 追mm少不了請吃飯了,去麥當勞,只管向服務員說 兩個b 就行了。麥當勞就是b 的abstractfactory,b 裡含有漢堡,雞翅和飲料.麥當勞或肯德基會根據b ...
PHP設計模式 抽象工廠
在學習過工廠方法之後,我所了解的工廠方法基本是去建立乙個物件,例如在玩遊戲的時候,建立了乙個關羽英雄,乙個張飛英雄這樣。但是有時候程式設計時可能需要建立一組物件,這就出現了第二種建立型設計模式 抽象工廠方法 abstractfactory 比方說,我在建立關羽的時候手上拿著青龍偃月刀,騎著赤兔馬。建...