從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵III


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

成都創(chuàng)新互聯(lián)專注于疊彩企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城開發(fā)。疊彩網(wǎng)站建設(shè)公司,為疊彩等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

本篇是設(shè)計(jì)模式系列的第二篇,雖然之前也寫過(guò)相應(yīng)的文章,但是因?yàn)榉N種原因后來(lái)斷掉了,而且發(fā)現(xiàn)之前寫的內(nèi)容也很渣,不夠系統(tǒng)。所以現(xiàn)在打算重寫,加上距離現(xiàn)在也有一段時(shí)間了,也算是自己的一個(gè)回顧吧!

學(xué)而時(shí)習(xí)之,不亦說(shuō)乎。

推薦閱讀:

從零開始單排學(xué)設(shè)計(jì)模式「UML類圖」定級(jí)賽

目前段位: 黑鐵 III


從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 IIIcdn.xitu.io/2019/2/14/168eb35943726dd3?w=568&h=291&f=jpeg&s=7582">

Let's Go!

前言

設(shè)計(jì)模式不是語(yǔ)法,是一種巧妙的寫法,能把程序變的更加靈活。架構(gòu)模式比設(shè)計(jì)模式大,架構(gòu)模式是戰(zhàn)略,而設(shè)計(jì)模式是戰(zhàn)術(shù)。

設(shè)計(jì)模式分為3大類型:創(chuàng)建型,行為型,結(jié)構(gòu)型,總共有23種。

簡(jiǎn)單工廠模式

簡(jiǎn)單工廠模式設(shè)計(jì)模式屬于創(chuàng)建型設(shè)計(jì)模式,但不屬于23種設(shè)計(jì)模式范圍內(nèi),屬于23種設(shè)計(jì)模式中工廠方法的入門模式,又叫靜態(tài)工廠方法模式。

簡(jiǎn)單工廠模式是一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。它的好處是隱藏對(duì)象創(chuàng)建,不用依賴對(duì)象,可以隨意更換對(duì)象。

在工廠模式中,工廠類中的所有方法返回同一個(gè)抽象產(chǎn)品類,代碼的升級(jí)和擴(kuò)展只需要在這個(gè)工廠類中注入新的功能方法,返回抽象產(chǎn)品類即可,或是另外寫接口,將這個(gè)抽象產(chǎn)品類強(qiáng)制轉(zhuǎn)換成這個(gè)接口,讓具體產(chǎn)品類去實(shí)現(xiàn)。

業(yè)務(wù)需求

如果讓你設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器,實(shí)現(xiàn)兩位數(shù)的簡(jiǎn)單加減乘除運(yùn)算,你會(huì)怎么設(shè)計(jì)呢?

代碼實(shí)現(xiàn)

剛接到需求的你,絕對(duì)會(huì)發(fā)現(xiàn),需求是如此so easy(很容易),刷刷刷的就完成了任務(wù)。

實(shí)現(xiàn)思路很簡(jiǎn)單,一個(gè)運(yùn)算類,用來(lái)計(jì)算結(jié)果的,一個(gè)計(jì)算器類,用來(lái)實(shí)現(xiàn)交互并接收參數(shù)的。

寫完的代碼如下

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

我們來(lái)運(yùn)行一遍,看下結(jié)果

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

是不是很簡(jiǎn)單,哈哈,我真是個(gè)天才(自戀一下),寫完之后看著自己寫的代碼,總覺(jué)得似乎不妥。

Java的特點(diǎn)是面向?qū)ο?,而面向?qū)ο蟮娜筇卣魇欠庋b、繼承和多態(tài)。我這里好像只用到了封裝,將運(yùn)算類進(jìn)行一個(gè)簡(jiǎn)單封裝,但是繼承和多態(tài)卻沒(méi)有體現(xiàn)出來(lái).....要是這樣提交代碼,被leader(領(lǐng)導(dǎo))看到那豈不是要被拖出去槍斃,不行,還得再改改。

再次改版之后運(yùn)算類Operation代碼如下

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

(PS:這里僅僅是為了方便所以聲明的是內(nèi)部類,實(shí)際開發(fā)類似的程序時(shí)不要這樣寫,因?yàn)槿绻绦蜃儚?fù)雜之后,這種編寫方式不利于維護(hù))

新創(chuàng)建了一個(gè)簡(jiǎn)單工廠類,用于實(shí)現(xiàn)業(yè)務(wù)邏輯。

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

計(jì)算器類改動(dòng)不大

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

來(lái)試試新版的計(jì)算器,看一下結(jié)果

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

這樣提交代碼問(wèn)題應(yīng)該不大了。

新版的代碼中,你只需要輸入運(yùn)算符號(hào),工廠就實(shí)例化出合適的對(duì)象,通過(guò)多態(tài),返回父類的方式實(shí)現(xiàn)了計(jì)算器的結(jié)果。同時(shí),如果后續(xù)需要對(duì)程序維護(hù),如要維護(hù)加法類,那么只需要提供新增方法的代碼即可,不需要全部代碼都提供,提高了整個(gè)項(xiàng)目的安全性。

簡(jiǎn)單工廠模式UML類圖


從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

總結(jié)


工廠(Factory):用一個(gè)單獨(dú)的類來(lái)做這個(gè)類創(chuàng)造實(shí)例的過(guò)程,這就是工廠。

簡(jiǎn)單工廠模式解決的就是對(duì)象創(chuàng)建問(wèn)題。

從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III

當(dāng)我們已知的某些條件后,對(duì)類的選擇,而這些類都是同一父類的子類,那么我們就可以使用簡(jiǎn)單工廠模式。

往期精彩回顧

房東:你敢申報(bào),我就漲房租!京東取消年終獎(jiǎng)!

一千行MySQL詳細(xì)學(xué)習(xí)筆記(值得學(xué)習(xí)與收藏)

你女朋友是高可用么?

在Java中如何優(yōu)雅地判空

最近整個(gè)業(yè)內(nèi)狀態(tài)不太好,注意提防一些公司的小九九!

Java爬取并下載酷狗TOP500歌曲

如何計(jì)算服務(wù)器能夠承受多大的pv?

程序員們,別再學(xué)習(xí)框架了!

??瞥绦騿T與本科程序員之間有什么區(qū)別?

程序員的一天是怎樣過(guò)的?

從 0 開始手寫一個(gè)Tomcat,7 步搞定!


從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵 III
歡迎關(guān)注我的公眾號(hào)「程序員的成長(zhǎng)之路」,閱讀更多精彩!   

文章題目:從零開始單排學(xué)設(shè)計(jì)模式「簡(jiǎn)單工廠設(shè)計(jì)模式」黑鐵III
當(dāng)前鏈接:http://muchs.cn/article22/piccjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷營(yíng)銷型網(wǎng)站建設(shè)、微信公眾號(hào)App開發(fā)、微信小程序、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)