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

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

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

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

學而時習之,不亦說乎。

推薦閱讀:

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

目前段位:黑鐵 III


 

Let's Go!

前言

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

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

簡單工廠模式

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

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

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

業務需求

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

程式碼實現

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

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

寫完的程式碼如下


 

 

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


 

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

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

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


 

 

 

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

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


 

計算器類改動不大


 

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


 

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

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

簡單工廠模式UML類圖


 

總結

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

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


 

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

往期精彩回顧

房東:你敢申報,我就漲房租!京東取消年終獎!

一千行MySQL詳細學習筆記(值得學習與收藏)

你女朋友是高可用麼?

在Java中如何優雅地判空

最近整個業內狀態不太好,注意提防一些公司的小九九!

Java爬取並下載酷狗TOP500歌曲

如何計算伺服器能夠承受多大的pv?

程式設計師們,別再學習框架了!

專科程式設計師與本科程式設計師之間有什麼區別?

程式設計師的一天是怎樣過的?

從 0 開始手寫一個Tomcat,7 步搞定!


歡迎關注我的公眾號「程式設計師的成長之路」,閱讀更多精彩!  

相關文章