91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-10 17:15:37 來源:ITPUB博客 閱讀:126 作者:孤獨鍵客 欄目:軟件技術


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


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


學而時習之,不亦說乎。


推薦閱讀:

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


目前段位: 黑鐵 III


從零開始單排學設計模式「簡單工廠設計模式」黑鐵 IIIcdn.xitu.io/2019/2/14/168eb35943726dd3?w=568&h=291&f=jpeg&s=7582">


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

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





往期精彩回顧

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

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

你女朋友是高可用么?

在Java中如何優雅地判空

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

Java爬取并下載酷狗TOP500歌曲

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

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

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

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

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


從零開始單排學設計模式「簡單工廠設計模式」黑鐵 III
歡迎關注我的公眾號「程序員的成長之路」,閱讀更多精彩!   


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

获嘉县| 易门县| 大厂| 黄浦区| 余干县| 化州市| 大冶市| 乐业县| 上杭县| 济宁市| 罗城| 漯河市| 方正县| 吴忠市| 恩平市| 丰宁| 浙江省| 石河子市| 禹城市| 凤庆县| 扎鲁特旗| 九龙县| 历史| 黔西| 右玉县| 苏州市| 灵璧县| 嘉祥县| 宜昌市| 沙洋县| 泌阳县| 漯河市| 方正县| 卢龙县| 临泽县| 乃东县| 攀枝花市| 镇雄县| 福州市| 临西县| 田林县|