從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

孤獨鍵客發表於2019-02-14


閱讀本文大概需要 2 分鐘。


本篇是設計模式系列的第二篇,雖然之前也寫過相應的文章,但是因為種種原因後來斷掉了,而且發現之前寫的內容也很渣,不夠系統。所以現在打算重寫,加上距離現在也有一段時間了,也算是自己的一個回顧吧!


學而時習之,不亦說乎。


推薦閱讀:

從零開始單排學設計模式「UML類圖」定級賽


目前段位: 黑鐵 III


從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III


Let's Go!


前言


設計模式不是語法,是一種巧妙的寫法,能把程式變的更加靈活。架構模式比設計模式大,架構模式是戰略,而設計模式是戰術。


設計模式分為3大型別:建立型,行為型,結構型,總共有23種。


簡單工廠模式


簡單工廠模式設計模式屬於建立型設計模式,但不屬於23種設計模式範圍內,屬於23種設計模式中工廠方法的入門模式,又叫靜態工廠方法模式。


簡單工廠模式是一個工廠物件決定建立出哪一種產品類的例項。它的好處是隱藏物件建立,不用依賴物件,可以隨意更換物件。


在工廠模式中,工廠類中的所有方法返回同一個抽象產品類,程式碼的升級和擴充套件只需要在這個工廠類中注入新的功能方法,返回抽象產品類即可,或是另外寫介面,將這個抽象產品類強制轉換成這個介面,讓具體產品類去實現。


業務需求


如果讓你設計一個簡單的計算器,實現兩位數的簡單加減乘除運算,你會怎麼設計呢?


程式碼實現


剛接到需求的你,絕對會發現,需求是如此so easy(很容易),刷刷刷的就完成了任務。


實現思路很簡單,一個運算類,用來計算結果的,一個計算器類,用來實現互動並接收引數的。


寫完的程式碼如下

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

我們來執行一遍,看下結果

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

是不是很簡單,哈哈,我真是個天才(自戀一下),寫完之後看著自己寫的程式碼,總覺得似乎不妥。


Java的特點是物件導向,而物件導向的三大特徵是封裝、繼承和多型。我這裡好像只用到了封裝,將運算類進行一個簡單封裝,但是繼承和多型卻沒有體現出來.....要是這樣提交程式碼,被leader(領導)看到那豈不是要被拖出去槍斃,不行,還得再改改。


再次改版之後運算類Operation程式碼如下

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

(PS:這裡僅僅是為了方便所以宣告的是內部類,實際開發類似的程式時不要這樣寫,因為如果程式變複雜之後,這種編寫方式不利於維護)


新建立了一個簡單工廠類,用於實現業務邏輯。

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

計算器類改動不大

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

來試試新版的計算器,看一下結果

從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

這樣提交程式碼問題應該不大了。


新版的程式碼中,你只需要輸入運算子號,工廠就例項化出合適的物件,透過多型,返回父類的方式實現了計算器的結果。同時,如果後續需要對程式維護,如要維護加法類,那麼只需要提供新增方法的程式碼即可,不需要全部程式碼都提供,提高了整個專案的安全性。


簡單工廠模式UML類圖


從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III


總結


工廠(Factory):用一個單獨的類來做這個類創造例項的過程,這就是工廠。


簡單工廠模式解決的就是物件建立問題。


從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III

當我們已知的某些條件後,對類的選擇,而這些類都是同一父類的子類,那麼我們就可以使用簡單工廠模式。





往期精彩回顧


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902700/viewspace-2633768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章