1.簡介
抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創(chuàng)建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。
在抽象工廠模式中,接口是負責創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供對象。
2.場景
- 服裝店中的衣服,比如說有商務裝(成套,一系列具體產(chǎn)品)、時尚裝(成套,一系列具體產(chǎn)品),甚至可能有商務女裝、商務男裝、時尚女裝、時尚男裝,這些也都是成套的,即一系列具體產(chǎn)品。假設(shè) 某一個衣柜(具體工廠)只能存放某一種這樣的衣服(成套,一系列具體產(chǎn)品),每次拿這種成套的衣服時也自然要從這個衣柜中取出了。所有的衣柜(具體工廠)都是衣柜類的(抽象工廠)某一個,而每一件成套的衣服又包括具體的上衣(某一具體產(chǎn)品),褲子(某一具體產(chǎn)品),這些具體的上衣其實也都是上衣(抽象產(chǎn)品),具體的褲子也都是褲子(另一個抽象產(chǎn)品)。
- 數(shù)據(jù)庫(抽象工廠),下面有mysql,oracle(具體工廠),抽象工廠生產(chǎn)user,dept(抽象產(chǎn)品)兩種,mysql具體工廠生產(chǎn)m-user和m-dept兩種具體產(chǎn)品,oracle具體工廠生產(chǎn)o-user和o-dept兩種具體產(chǎn)品。以后如果需要用mysql數(shù)據(jù)庫,那么就生產(chǎn)mysql工廠生產(chǎn)的產(chǎn)品。
- 抽象工廠模式也就是不僅生產(chǎn)鼠標,同時生產(chǎn)鍵盤。也就是 PC 廠商是個父類,有生產(chǎn)鼠標,生產(chǎn)鍵盤兩個接口。戴爾工廠,惠普工廠繼承它,可以分別生產(chǎn)戴爾鼠標+戴爾鍵盤,和惠普鼠標+惠普鍵盤。創(chuàng)建工廠時,由戴爾工廠創(chuàng)建。后續(xù)工廠.生產(chǎn)鼠標()則生產(chǎn)戴爾鼠標,工廠.生產(chǎn)鍵盤()則生產(chǎn)戴爾鍵盤。
3. 抽象工廠模式模型圖

1530601916-7298-DP-AbstractFactory.png
4. 抽象工廠模式代碼實現(xiàn)

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png
5. 抽象工廠模式和工廠方法模式區(qū)分
只有一個user類和user操作類的時候,是需要工廠方法模式,如果加上dept等等,就形成了抽象工廠方法模式。