1. 程式人生 > 其它 >Java工廠設計模式

Java工廠設計模式

什麼是工廠模式

老規矩先用比較難理解的官方語言來表達,工廠模式是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用一個共同的介面來指向新建立的物件。現在在以一個具體的例子來簡單簡化下工廠模式。假如我現在去餐館吃飯,餐館有回鍋肉,有魚,有烤鴨可供我選擇,然後我點餐餐館為我做出具體的菜。說完這個例子下面我也會用程式碼來實現這個例子,給大家簡單理解下工廠模式。

首先我們來建立一個餐館的介面,因為這裡只要有做菜就行,所以寫一個cook的方法。

接下來寫三個實現類,分別是做回鍋肉的,做魚的,做烤鴨的,用這三個實現類去實現餐館的介面。

現在餐館已經具備了做回鍋肉,做魚,做烤鴨的功能,但是客人來了並不知道餐館有這些菜,這時候就需要我們來給餐館做一個選單,客人來了就可以根據選單點餐,這樣就省去了很多的麻煩對不對?

選單也有了,現在客人來了可以點餐了,假如客人根據選單點了一份烤鴨,那餐館就可以直接給客人制作一份美味的烤鴨.

來看看執行結果

通過上面的例子就給大家簡單介紹了一下簡單工廠模式。但是工廠模式除了簡單工廠模式還有工廠方法模式和抽象工廠模式,下面我再已餐館這個例子給大家擴充套件一下工廠方法模式。工廠方法模式就是把簡單工廠中具體的工廠類,劃分成兩層:抽象工廠層+具體的工廠子類層。

首先我們來建立一個抽象工廠類

建立兩個具體需要的產品實現類去繼承上面這個抽象類

烤鴨和魚都做好了,開始享用吧!

看下執行結果

千呼萬喚始出來,紅燒魚和烤鴨出鍋咯!

優點和缺點

優點:

1.一個呼叫者想建立一個物件,只要知道其名稱就可以了。

2.擴充套件性高,如果想增加一個產品,只要擴充套件一個工廠類就可以。

3.遮蔽產品的具體實現,呼叫者只關心產品的介面。

缺點:每次增加一個產品時,都需要增加一個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。