Java23中設計模式4——創建型模式之抽象工廠模式

Java中除去有設計原則之外,還有23中設計模式。(設計模式我們主要來將思想和精髓的地方,除去Java還有其他的語言也可以適用)

這些模式都是前輩們一點一點積累下來,一直在改進,一直在優化的,這些設計模式可以解決一些特定的問題。

這些模式中,可以說是將語言的使用提現的淋漓盡致,我們今天要學習第一種設計模式,抽象工廠模式!

抽象工廠模式:

大家可以發現啊,這個之前我們說了這個工廠模式,但是現在怎麼多了一個抽象工廠模式?是不是,它和工廠模式有啥區別,如何理解抽象這個詞的,爲啥會有倆工廠模式?

我們帶着這些個以爲來看這篇博客。

先來說說什麼是抽象工廠模式:

抽象工廠呢就是一個超級工廠, 它是用來創建其他工廠,就相當於我們之前的那個博客的麪粉廠一樣,我們除去麪粉廠之外,還得需要一個餡料廠(不能光吃餃子皮吧,餃子得有餡料吧),這時候,我們定義一個超級工廠,也就是抽象工廠,我們用這個超級工廠來管理其他的這些個工廠。

這麼一說,上面的這些個問題都知道了答案了。接下來我們來實現一下簡單的抽象工廠,來體驗一下。

抽象工廠模式的實現:

我們的那個麪粉廠暫時先不動,再相同的創建一個餡料廠。

先弄個餡料的接口,然後接口中添加和餡料的方法。相同的,具體和啥餡料,我們讓具體的實現類來決定。

然後,我想吃韭菜雞蛋餡的,我就先弄個韭菜雞蛋的餡,讓它去實現這個餡料接口。

除去這個韭菜雞蛋,我再弄個黑暗料理,花生醬魷魚須餡的。

原本在工廠模式中,接下來我們就要創建工廠了,但是,我們這次是弄得超級工廠,我們不按照以前的方法去做了,而是換一種思路,繼續!

第一步:抽象工廠,先得抽象,然後工廠。我們創建一個抽象工廠類。叫食品加工廠,FoodFactory,但是是抽象的。(注意命名規範,如果不知道規範的,請看阿里巴巴Java開發手冊)

大家勾選了這個abstract,就直接創建一個抽象類,方便快捷。

第二步:我們在這個食品加工廠類中將剛剛兩個工廠搞成抽象方法,這個方法主要目的是獲取工廠。也就是我們上一個工廠模式介紹中的工廠中的方法。我來貼一下我們上個博客中的工廠方法。

我們將上面方法抽象出來

有了這個抽象工廠之後,我們這纔來創建具體的工廠,並且讓每一個具體的工廠,來繼承這個食品加工廠!

實現這個之後我們發現有倆方法,獲取麪粉的獲取餡料的方法都有,但是我們是麪粉廠,我們只管麪粉,餡料我們是弄不了的,所以我們就不管它,就讓它返回null。

當然,還有餡料廠。

第三步:我們還得弄個管理這倆工廠的類,用來實例化工廠。

最後一步:我們來測試,先來做一個韭菜雞蛋餡的餃子。

先弄餃子麪糰。

再弄餃子餡。

這樣是不是,餃子面也有了,餡也有了?

其實上面這段代碼我們看的不是很明白,或者不是很理解這個具體的架構樣子,我給一個圖,畫的不專業,但是,絕對能夠讓大家看明白結構。

大家如果有不明白的地方可以聯繫我,我給大家解答。

 

發佈了33 篇原創文章 · 獲贊 33 · 訪問量 1612
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章