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


閱讀本文大概須要 2 分鐘。程序員

 

本篇是設計模式系列的第二篇,雖然以前也寫過相應的文章,可是由於種種緣由後來斷掉了,並且發現以前寫的內容也很渣,不夠系統。因此如今打算重寫,加上距離如今也有一段時間了,也算是本身的一個回顧吧!設計模式

 

學而時習之,不亦說乎。安全

 

推薦閱讀:服務器

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

 

目前段位:黑鐵 III框架

 

 

Let's Go!學習

 

前言設計

 

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

 

設計模式分爲3大類型:建立型,行爲型,結構型,總共有23種。對象

 

簡單工廠模式

 

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

 

簡單工廠模式是一個工廠對象決定建立出哪種產品類的實例。它的好處是隱藏對象建立,不用依賴對象,能夠隨意更換對象。

 

在工廠模式中,工廠類中的全部方法返回同一個抽象產品類,代碼的升級和擴展只須要在這個工廠類中注入新的功能方法,返回抽象產品類便可,或是另外寫接口,將這個抽象產品類強制轉換成這個接口,讓具體產品類去實現。

 

業務需求

 

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

 

代碼實現

 

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

 

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

 

寫完的代碼以下

咱們來運行一遍,看下結果

是否是很簡單,哈哈,我真是個天才(自戀一下),寫完以後看着本身寫的代碼,總以爲彷佛不妥。

 

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

 

再次改版以後運算類Operation代碼以下

(PS:這裏僅僅是爲了方便因此聲明的是內部類,實際開發相似的程序時不要這樣寫,由於若是程序變複雜以後,這種編寫方式不利於維護)

 

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

計算器類改動不大

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

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

 

新版的代碼中,你只須要輸入運算符號,工廠就實例化出合適的對象,經過多態,返回父類的方式實現了計算器的結果。同時,若是後續須要對程序維護,如要維護加法類,那麼只須要提供新增方法的代碼便可,不須要所有代碼都提供,提升了整個項目的安全性。

 

簡單工廠模式UML類圖

 

 

總結

 

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

 

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

 

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

 

 

 

 

往期精彩回顧

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

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

你女友是高可用麼?

在Java中如何優雅地判空

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

Java爬取並下載酷狗TOP500歌曲

如何計算服務器可以承受多大的pv?

程序員們,別再學習框架了!

專科程序員與本科程序員之間有什麼區別?

程序員的一天是怎樣過的?

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


歡迎關注個人公衆號「程序員的成長之路」,閱讀更多精彩!   

相關文章
相關標籤/搜索