轉(zhuǎn)載引用:https://blog.csdn.net/wjlsxl_whb/article/details/52934941
(1) 產(chǎn)品等級(jí)結(jié)構(gòu):產(chǎn)品等級(jí)結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),如一個(gè)抽象類(lèi)是電視機(jī),其子類(lèi)有海爾電視機(jī)、海信電視機(jī)、TCL電視機(jī),則抽象電視機(jī)與具體品牌的電視機(jī)之間構(gòu)成了一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),抽象電視機(jī)是父類(lèi),而具體品牌的電視機(jī)是其子類(lèi)。
(2) 產(chǎn)品族:在抽象工廠模式中,產(chǎn)品族是指由同一個(gè)工廠生產(chǎn)的,位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中的一組產(chǎn)品,如海爾電器工廠生產(chǎn)的海爾電視機(jī)、海爾電冰箱,海爾電視機(jī)位于電視機(jī)產(chǎn)品等級(jí)結(jié)構(gòu)中,海爾電冰箱位于電冰箱產(chǎn)品等級(jí)結(jié)構(gòu)中,海爾電視機(jī)、海爾電冰箱構(gòu)成了一個(gè)產(chǎn)品族。

不同顏色的多個(gè)正方形、圓形和橢圓形分別構(gòu)成了三個(gè)不同的產(chǎn)品等級(jí)結(jié)構(gòu),而相同顏色的正方形、圓形和橢圓形構(gòu)成了一個(gè)產(chǎn)品族,每一個(gè)形狀對(duì)象都位于某個(gè)產(chǎn)品族,并屬于某個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)。圖3中一共有五個(gè)產(chǎn)品族,分屬于三個(gè)不同的產(chǎn)品等級(jí)結(jié)構(gòu)。我們只要指明一個(gè)產(chǎn)品所處的產(chǎn)品族以及它所屬的等級(jí)結(jié)構(gòu),就可以唯一確定這個(gè)產(chǎn)品。
當(dāng)系統(tǒng)所提供的工廠生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)、屬于不同類(lèi)型的具體產(chǎn)品時(shí)就可以使用抽象工廠模式。抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形式。抽象工廠模式與工廠方法模式最大的區(qū)別在于,工廠方法模式針對(duì)的是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),而抽象工廠模式需要面對(duì)多個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),一個(gè)工廠等級(jí)結(jié)構(gòu)可以負(fù)責(zé)多個(gè)不同產(chǎn)品等級(jí)結(jié)構(gòu)中的產(chǎn)品對(duì)象的創(chuàng)建。當(dāng)一個(gè)工廠等級(jí)結(jié)構(gòu)可以創(chuàng)建出分屬于不同產(chǎn)品等級(jí)結(jié)構(gòu)的一個(gè)產(chǎn)品族中的所有對(duì)象時(shí),抽象工廠模式比工廠方法模式更為簡(jiǎn)單、更有效率。抽象工廠模式示意圖

每一個(gè)具體工廠可以生產(chǎn)屬于一個(gè)產(chǎn)品族的所有產(chǎn)品,例如生產(chǎn)顏色相同的正方形、圓形和橢圓形,所生產(chǎn)的產(chǎn)品又位于不同的產(chǎn)品等級(jí)結(jié)構(gòu)中。如果使用工廠方法模式,上圖所示結(jié)構(gòu)需要提供15個(gè)具體工廠,而使用抽象工廠模式只需要提供5個(gè)具體工廠,極大減少了系統(tǒng)中類(lèi)的個(gè)數(shù)。