設計模式之建立型 3 抽象工廠模式

2022-03-11 14:31:34 字數 1199 閱讀 2227

1.介紹:

抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。根據黎克特制替換原則,任何接受父型別的地方,都應當能夠接受子型別。因此,實際上系統所需要的,僅僅是型別與這些抽象產品角色相同的一些例項,而不是這些抽象產品的例項。換言之,也就是這些抽象產品的具體子類的例項。工廠類負責建立抽象產品的具體子類的例項。

2.定義:

為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類。

3.模擬場景:

我們還是繼續範·迪塞爾的例子,往往這些大牌生活中經常參加一些活動,或是商務活動或是公益活動。不管參加什麼活動,加上老范(範·迪塞爾名字太長,以下文中簡稱老范)的知名度,他的車肯定不少,可能光跑車或者光越野車就有多輛。比如說有跑車(多輛,跑車系列的具體產品)、越野車(多輛,越野車系列的具體產品)、兩箱車(多輛,兩箱車系列的具體產品)。可能很多大牌明星都是如此的。假設老范家裡,某乙個車庫(具體工廠)只存放某一系列的車(比如說跑車車庫只存放跑車一系列具體的產品),每次要某一輛跑車的時候肯定要從這個跑車車庫裡開出來。用了oo(object oriented,物件導向)的思想去理解,所有的車庫(具體工廠)都是車庫類(抽象工廠)的某乙個,而每一輛車又包括具體的開車時候所背的包(某一具體產品。包是也是放在車庫裡的,不同的車搭配不同的包,我們把車和車對應的揹包稱作出去參加活動的裝備),這些具體的包其實也都是揹包(抽象產品),具體的車其實也都是車(另乙個抽象產品)。

4.場景分析:

上面的場景可能有點稀里糊塗的,但是用oo的思想結合前面的簡單工廠和工廠方法的思路去理解的話,也好理解。

下面讓我們來捋一捋這個思路:

抽象工廠:虛擬的車庫,只是所有車庫的乙個概念。在程式中可能是乙個藉口或者抽象類,對其他車庫的規範,開車和取包。

具體工廠:具體存在的車庫,用來存放車和車對應的揹包。在程式中繼承抽象工廠,實現抽象工廠中的方法,可以有具體的產品。

抽象產品:虛擬的裝備(車和對應的揹包),也只是所有裝備的乙個概念。在程式中可能是多個介面或者多個抽象類,對具體的裝備起到規範。

具體產品:活動參加的具體裝備,它指的是組成裝備的某一輛車或者揹包。它繼承自某乙個抽象產品。

【資料】

設計模式 建立型之抽象工廠模式

在工廠模式中,具體工廠負責生產具體的產品,每乙個具體工廠對應一種具體的產品,但有的時候,我們需要乙個工廠可以生產多種產品。為了闡述的更加清晰明了,首先引入兩個抽象工廠模式中概念 產品等級結構和產品族 提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類,抽象工廠模式也叫kit模式。其實...

建立型設計模式之抽象工廠模式

在前面已經講解過工廠方法模式,這倆者有什麼區別呢?前面所說的工廠方法模式只會生產一種具體的產品,而抽象工廠模式生產出來的產品是不確定的。例如不同作業系統中控制項的實現不一樣,展示效果也不一樣,對於作業系統如android,ios,windowphone本身構成乙個產品類,而其控制項如button,t...

設計模式筆記 3 抽象工廠模式(建立型)

提供乙個藉口,讓該介面負責建立一系列相關或者相互依賴的物件,無需指定他們具體的類。在軟體系統中經常面臨著一系列相互依賴的物件的建立的工作,同時由於需求的變化,往往存在著更對系列物件的建立。常規的物件建立的方法,直接使用new關鍵字 road road new road 這樣直接new會有乙個問題,不...