您好,登錄后才能下訂單哦!
閱讀本文大概需要 2 分鐘。
本篇是設計模式系列的第二篇,雖然之前也寫過相應的文章,但是因為種種原因后來斷掉了,而且發現之前寫的內容也很渣,不夠系統。所以現在打算重寫,加上距離現在也有一段時間了,也算是自己的一個回顧吧!
學而時習之,不亦說乎。
推薦閱讀:
從零開始單排學設計模式「UML類圖」定級賽
目前段位: 黑鐵 III
cdn.xitu.io/2019/2/14/168eb35943726dd3?w=568&h=291&f=jpeg&s=7582">
Let's Go!
前言
設計模式不是語法,是一種巧妙的寫法,能把程序變的更加靈活。架構模式比設計模式大,架構模式是戰略,而設計模式是戰術。
設計模式分為3大類型:創建型,行為型,結構型,總共有23種。
簡單工廠模式
簡單工廠模式設計模式屬于創建型設計模式,但不屬于23種設計模式范圍內,屬于23種設計模式中工廠方法的入門模式,又叫靜態工廠方法模式。
簡單工廠模式是一個工廠對象決定創建出哪一種產品類的實例。它的好處是隱藏對象創建,不用依賴對象,可以隨意更換對象。
在工廠模式中,工廠類中的所有方法返回同一個抽象產品類,代碼的升級和擴展只需要在這個工廠類中注入新的功能方法,返回抽象產品類即可,或是另外寫接口,將這個抽象產品類強制轉換成這個接口,讓具體產品類去實現。
業務需求
如果讓你設計一個簡單的計算器,實現兩位數的簡單加減乘除運算,你會怎么設計呢?
代碼實現
剛接到需求的你,絕對會發現,需求是如此so easy(很容易),刷刷刷的就完成了任務。
實現思路很簡單,一個運算類,用來計算結果的,一個計算器類,用來實現交互并接收參數的。
寫完的代碼如下
我們來運行一遍,看下結果
是不是很簡單,哈哈,我真是個天才(自戀一下),寫完之后看著自己寫的代碼,總覺得似乎不妥。
Java的特點是面向對象,而面向對象的三大特征是封裝、繼承和多態。我這里好像只用到了封裝,將運算類進行一個簡單封裝,但是繼承和多態卻沒有體現出來.....要是這樣提交代碼,被leader(領導)看到那豈不是要被拖出去槍斃,不行,還得再改改。
再次改版之后運算類Operation代碼如下
(PS:這里僅僅是為了方便所以聲明的是內部類,實際開發類似的程序時不要這樣寫,因為如果程序變復雜之后,這種編寫方式不利于維護)
新創建了一個簡單工廠類,用于實現業務邏輯。
計算器類改動不大
來試試新版的計算器,看一下結果
這樣提交代碼問題應該不大了。
新版的代碼中,你只需要輸入運算符號,工廠就實例化出合適的對象,通過多態,返回父類的方式實現了計算器的結果。同時,如果后續需要對程序維護,如要維護加法類,那么只需要提供新增方法的代碼即可,不需要全部代碼都提供,提高了整個項目的安全性。
簡單工廠模式UML類圖
總結
工廠(Factory):用一個單獨的類來做這個類創造實例的過程,這就是工廠。
簡單工廠模式解決的就是對象創建問題。
當我們已知的某些條件后,對類的選擇,而這些類都是同一父類的子類,那么我們就可以使用簡單工廠模式。
房東:你敢申報,我就漲房租!京東取消年終獎!
一千行MySQL詳細學習筆記(值得學習與收藏)
你女朋友是高可用么?
在Java中如何優雅地判空
最近整個業內狀態不太好,注意提防一些公司的小九九!
Java爬取并下載酷狗TOP500歌曲
如何計算服務器能夠承受多大的pv?
程序員們,別再學習框架了!
專科程序員與本科程序員之間有什么區別?
程序員的一天是怎樣過的?
從 0 開始手寫一個Tomcat,7 步搞定!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。