閱讀本文大概須要 2 分鐘。程序員
本篇是設計模式系列的第二篇,雖然以前也寫過相應的文章,可是由於種種緣由後來斷掉了,並且發現以前寫的內容也很渣,不夠系統。因此如今打算重寫,加上距離如今也有一段時間了,也算是本身的一個回顧吧!設計模式
學而時習之,不亦說乎。安全
推薦閱讀:服務器
目前段位:黑鐵 III框架
Let's Go!學習
前言設計
設計模式不是語法,是一種巧妙的寫法,能把程序變的更加靈活。架構模式比設計模式大,架構模式是戰略,而設計模式是戰術。3d
設計模式分爲3大類型:建立型,行爲型,結構型,總共有23種。對象
簡單工廠模式
簡單工廠模式設計模式屬於建立型設計模式,但不屬於23種設計模式範圍內,屬於23種設計模式中工廠方法的入門模式,又叫靜態工廠方法模式。
簡單工廠模式是一個工廠對象決定建立出哪種產品類的實例。它的好處是隱藏對象建立,不用依賴對象,能夠隨意更換對象。
在工廠模式中,工廠類中的全部方法返回同一個抽象產品類,代碼的升級和擴展只須要在這個工廠類中注入新的功能方法,返回抽象產品類便可,或是另外寫接口,將這個抽象產品類強制轉換成這個接口,讓具體產品類去實現。
業務需求
若是讓你設計一個簡單的計算器,實現兩位數的簡單加減乘除運算,你會怎麼設計呢?
代碼實現
剛接到需求的你,絕對會發現,需求是如此so easy(很容易),刷刷刷的就完成了任務。
實現思路很簡單,一個運算類,用來計算結果的,一個計算器類,用來實現交互並接收參數的。
寫完的代碼以下
咱們來運行一遍,看下結果
是否是很簡單,哈哈,我真是個天才(自戀一下),寫完以後看着本身寫的代碼,總以爲彷佛不妥。
Java的特色是面向對象,而面向對象的三大特徵是封裝、繼承和多態。我這裏好像只用到了封裝,將運算類進行一個簡單封裝,可是繼承和多態卻沒有體現出來.....要是這樣提交代碼,被leader(領導)看到那豈不是要被拖出去槍斃,不行,還得再改改。
再次改版以後運算類Operation代碼以下
(PS:這裏僅僅是爲了方便因此聲明的是內部類,實際開發相似的程序時不要這樣寫,由於若是程序變複雜以後,這種編寫方式不利於維護)
新建立了一個簡單工廠類,用於實現業務邏輯。
計算器類改動不大
來試試新版的計算器,看一下結果
這樣提交代碼問題應該不大了。
新版的代碼中,你只須要輸入運算符號,工廠就實例化出合適的對象,經過多態,返回父類的方式實現了計算器的結果。同時,若是後續須要對程序維護,如要維護加法類,那麼只須要提供新增方法的代碼便可,不須要所有代碼都提供,提升了整個項目的安全性。
簡單工廠模式UML類圖
總結
工廠(Factory):用一個單獨的類來作這個類創造實例的過程,這就是工廠。
簡單工廠模式解決的就是對象建立問題。
當咱們已知的某些條件後,對類的選擇,而這些類都是同一父類的子類,那麼咱們就可使用簡單工廠模式。
往期精彩回顧
歡迎關注個人公衆號「程序員的成長之路」,閱讀更多精彩!