工廠三兄弟之抽象工廠模式(二)
2 產品等級結構與產品族
在工廠方法模式中具體工廠負責生產具體的產品,每一個具體工廠對應一種具體產品,工廠方法具有唯一性,一般情況下,一個具體工廠中只有一個或者一組過載的工廠方法。但是有時候我們希望一個工廠可以提供多個產品物件,而不是單一的產品物件,如一個電器工廠,它可以生產電視機、電冰箱、空調等多種電器,而不是隻生產某一種電器。為了更好地理解抽象工廠模式,我們先引入兩個概念:
(1) 產品等級結構:產品等級結構即產品的繼承結構,如一個抽象類是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。
(2) 產品族:在抽象工廠模式中,產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位於電視機產品等級結構中,海爾電冰箱位於電冰箱產品等級結構中,海爾電視機、海爾電冰箱構成了一個產品族。
產品等級結構與產品族示意圖如圖3所示:
圖3 產品族與產品等級結構示意圖
在圖3中,不同顏色的多個正方形、圓形和橢圓形分別構成了三個不同的產品等級結構,而相同顏色的正方形、圓形和橢圓形構成了一個產品族,每一個形狀物件都位於某個產品族,並屬於某個產品等級結構。圖3中一共有五個產品族,分屬於三個不同的產品等級結構。我們只要指明一個產品所處的產品族以及它所屬的等級結構,就可以唯一確定這個產品。
當系統所提供的工廠生產的具體產品並不是一個簡單的物件,而是多個位於不同產品等級結構、屬於不同型別的具體產品時就可以使用抽象工廠模式。抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形式。抽象工廠模式與工廠方法模式最大的區別在於,工廠方法模式針對的是一個產品等級結構,而抽象工廠模式需要面對多個產品等級結構,一個工廠等級結構可以負責多個不同產品等級結構中的產品物件的建立。當一個工廠等級結構可以建立出分屬於不同產品等級結構的一個產品族中的所有物件時,抽象工廠模式比工廠方法模式更為簡單、更有效率。抽象工廠模式示意圖如圖4所示:
圖4 抽象工廠模式示意圖
在圖4中,每一個具體工廠可以生產屬於一個產品族的所有產品,例如生產顏色相同的正方形、圓形和橢圓形,所生產的產品又位於不同的產品等級結構中。如果使用工廠方法模式,圖4所示結構需要提供15個具體工廠,而使用抽象工廠模式只需要提供5個具體工廠,極大減少了系統中類的個數。
【作者:劉偉 http://blog.csdn.net/lovelion】
相關文章
- 工廠三兄弟之抽象工廠模式(一)抽象模式
- 工廠三兄弟之簡單工廠模式(二)模式
- 工廠三兄弟之簡單工廠模式(三)模式
- 工廠三兄弟之工廠方法模式(一)模式
- 工廠三兄弟之簡單工廠模式(一)模式
- 設計模式之工廠方法模式|抽象工廠模式設計模式抽象
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式 - 工廠三兄弟設計模式
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 簡單工廠、工廠方法和抽象工廠模式抽象模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 抽象工廠模式抽象模式
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 簡單工廠模式和抽象工廠模式模式抽象
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- Java設計模式之簡單工廠、工廠方法和抽象工廠Java設計模式抽象
- 設計模式(三):抽象工廠設計模式抽象
- 工廠模式 抽象模式模式抽象
- 【設計模式之抽象工廠】設計模式抽象
- 抽象工廠模式-與-工廠方法模式區別抽象模式
- 設計模式學習(二)工廠模式——抽象工廠模式+登錄檔設計模式抽象
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- java 抽象工廠模式Java抽象模式
- 06: 抽象工廠模式抽象模式
- 設計模式(三)抽象工廠方法模式設計模式抽象
- 工廠方法模式與抽象工廠模式的區別模式抽象
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- golang設計模式之抽象工廠模式Golang設計模式抽象
- 設計模式系列之「抽象工廠模式」設計模式抽象
- 設計模式之-抽象工廠-AbstractFactory設計模式抽象
- Python 實現工廠模式、抽象工廠,單例模式Python模式抽象單例
- 設計模式學習筆記(三)簡單工廠、工廠方法和抽象工廠之間的區別設計模式筆記抽象
- 簡單工廠,工廠方法和抽象工廠抽象
- 工廠模式之簡單工廠模式模式