設計模式系列之工廠模式 抽象工廠模式 八

2021-10-08 11:17:46 字數 1056 閱讀 9602

推薦閱讀:設計模式系列之工廠模式-工廠方法模式【七】

工廠方法模式通過引入工廠等級結構,解決了簡單工廠模式中工廠類職責太重的問題,但由於工廠方法模式中的每個工廠只生產一類動物,可能會導致系統中存在大量的工廠類。此時,可以考慮將一些相關的動物組成乙個動物族,由同乙個工廠來統一生產,這就是抽象工廠模式的基本思想。

比如動物中可以分為貓科、犬科等,貓、狗、老虎、豹子、鬣狗等都是具體的動物類。看下工廠方法模式和抽象工廠模式的區別:

由此看出使用抽象工廠模式極大地減少了系統中類的個數。

抽象工廠模式為建立一組物件提供了一種解決方案。與工廠方法模式相比,抽象工廠模式中的具體工廠不只是建立一種動物,它負責建立一族動物。抽象工廠模式定義如下:

抽象工廠模式(abstract factory pattern):提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類。抽象工廠模式又稱為kit模式,它是一種物件建立型模式。

在抽象工廠模式中,每乙個具體工廠都提供了多個工廠方法用於產生多種不同型別的動物,這些動物構成了乙個動物族。在抽象工廠模式結構中包含如下幾個角色:

在抽象工廠中宣告了多個工廠方法,用於建立不同型別的產品,抽象工廠可以是介面,也可以是抽象類或者具體類,其典型**如下所示:

public

abstract

class

abstractfactory

具體工廠實現了抽象工廠,每乙個具體的工廠方法可以返回乙個特定的動物物件,而同乙個具體工廠所建立的動物物件構成了乙個動物族。對於每乙個具體工廠類,其典型**如下所示:

public

class

concretefactory1

extends

abstractfactory

@override

public abstractanimalb createanimalb()

@override

public abstractanimalc createanimalc()

}

設計模式系列 抽象工廠模式

如圖,factorya專心負責生產producta,factoryb專心負責生產productb,factorya和factoryb之間沒有關係 如果到了後期,如果需要生產productc時,我們則可以建立乙個factoryc工廠類,該類專心負責生產productc類產品。由於factorya fa...

設計模式系列 抽象工廠模式

抽象工廠模式為建立一組物件提供了一種解決方案。與工廠方法模式相比,抽象工廠模式中的具體工廠不只是建立一種產品,它負責建立一族產品。例如海爾電器工廠生產的海爾電視機 海爾電冰箱,海爾電器廠1生產電視機型別1和電冰箱型別1,海爾電器廠2生產電視機型別2和電冰箱型別2,這個時候就必須要用抽象工廠模式了,工...

設計模式系列 抽象工廠模式

公司最近專案不忙,午間小憩之後,小二找到c哥攀談了起來。c哥,忙啥呢?也沒忙啥,就是隨便看看。哦哦,我最近也不怎麼忙。你上次給我講的工廠模式,受益匪淺啊!哈哈,是嘛!其實你不知道,還有抽象工廠模式呢!抽象工廠模式?願聞其詳。好,反正最近也不忙,就給你講講吧。小二,你知道,奧迪a4與a6,他們使用的輪...