電商公司都是怎么用Factorymode的

本篇文章給大家分享的是有關(guān)電商公司都是怎么用Factory mode的,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、天柱網(wǎng)絡(luò)推廣、小程序制作、天柱網(wǎng)絡(luò)營(yíng)銷、天柱企業(yè)策劃、天柱品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供天柱建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

不知道隨著大家工作年限的增長(zhǎng),有沒有一種危機(jī)感,害怕自己的技術(shù)深度開始沒有提升,所以經(jīng)常會(huì)去看一點(diǎn)框架的源碼,或者報(bào)一些網(wǎng)課去提升自己。

最近我有一個(gè)老東家的同事跟我聊起來這個(gè)問題,說最近剛換公司了,但是自己的寫的代碼感覺很“l(fā)ow”,在codereview的時(shí)候總能被提出各種建議,幾年經(jīng)驗(yàn)了還在犯那種新手的錯(cuò),寫代碼毫無模式和設(shè)計(jì)美感可言。

而且在想學(xué)習(xí)技術(shù)深度的時(shí)候(看一寫框架的源碼)總感覺只理解了表面,而沒有理解里面的思想。

這里大家應(yīng)該都知道我想說什么了,沒錯(cuò)就是 設(shè)計(jì)模式,其實(shí)這也是我剛工作第一年第二年不斷在思考問題,為什么要學(xué)設(shè)計(jì)模式?設(shè)計(jì)模式優(yōu)點(diǎn)有哪些?

提升查看框架源碼的能力

提升自己對(duì)復(fù)雜業(yè)務(wù)的邏輯的代碼設(shè)計(jì)能力以及code能力

對(duì)面試以及后面的職場(chǎng)道路打下扎實(shí)的基礎(chǔ)

比如我之前做電商活動(dòng)的時(shí)候,我之前做會(huì)場(chǎng)活動(dòng)的小伙伴就用了責(zé)任鏈+工廠+單例的模式,我只需要多個(gè)工廠類型,然后責(zé)任鏈傳遞,復(fù)用他的單例就ok了,這就是設(shè)計(jì)模式的好處,可以裝X還可以造福后人。

正文

今天我就聊一下工廠模式,工廠模式在我們的電商領(lǐng)域的應(yīng)用是非常廣泛的。寫之前我看了自己電腦項(xiàng)目的代碼,確實(shí)隨處可見。

(Factory mode)工廠模式主要可以分為三大類:

  • 簡(jiǎn)單工廠模式

  • 工廠方法模式

  • 抽象工程模式

今天我也主要圍繞這三種模式來舉例了解一下

簡(jiǎn)單工廠模式

工廠模式主要是用于對(duì)實(shí)現(xiàn)邏輯的封裝,并且通過對(duì)公共的接口提供對(duì)象的實(shí)列畫的服務(wù),在我添加新的類時(shí)不需大動(dòng)干戈,只要修改一點(diǎn)點(diǎn)就好。

舉個(gè)例子我之前所在的電商業(yè)務(wù)怎么創(chuàng)建創(chuàng)建商品的:

電商公司都是怎么用Factory mode的

在這個(gè)簡(jiǎn)單工廠里面,如果要?jiǎng)?chuàng)建活動(dòng)商品1  以及活動(dòng)商品2,我們要?jiǎng)?chuàng)建商品的時(shí)候只要調(diào)用簡(jiǎn)單工廠里面的創(chuàng)建商品方法,根據(jù)類型創(chuàng)建出不同的商品然后實(shí)列化返回就可以了。

簡(jiǎn)單工廠幾種實(shí)現(xiàn)方式:

靜態(tài)工廠模式

我們還是以創(chuàng)建商品為列子

電商公司都是怎么用Factory mode的

這種方式創(chuàng)建看起來其實(shí)也沒什么問題,根據(jù)類型創(chuàng)建不同的商品,但是有一個(gè)問題不知道大家發(fā)現(xiàn)沒有?

是不是我每增加一種類型是不是我還要去修改createProduct方法的 if else?這不是違背我們的開閉原則嗎?

所以這種方式不好,我們還有接來的兩種:

  • 使用反射機(jī)制

  • 直接注冊(cè)商品對(duì)象,添加一個(gè)Type類型方法,根據(jù)type類型返回自身相同類型的方法

同樣的我們還是以創(chuàng)建商品為列:反射實(shí)現(xiàn)

電商公司都是怎么用Factory mode的

看上面的代碼,我發(fā)現(xiàn)反射其實(shí)也很容易就實(shí)現(xiàn)了,但是在一些特定的情況下,并不適用,而且在某些特定的情況下是無法實(shí)現(xiàn)的,而且反射機(jī)制也會(huì)降低程序的運(yùn)行效果,在對(duì)性能要求很高的場(chǎng)景下應(yīng)該避免這種實(shí)現(xiàn)。

  • 這里還有一個(gè)問題適用反射不當(dāng)是容易導(dǎo)致線上機(jī)器出問題的,因?yàn)槲覀兎瓷鋭?chuàng)建的對(duì)象屬性是被SoftReference軟引用的,所以當(dāng)**-XX:SoftRefLRUPolicyMSPerMB**  沒有設(shè)置好的話會(huì)一直讓機(jī)器CPU很高。

  • 當(dāng)然他的默認(rèn)值是1000,也就根據(jù)大家的情況而定吧,反正就是注意一下這點(diǎn)。

剩下的一種其實(shí)很反射實(shí)現(xiàn)很像,就是為了避免使用反射,在Map的對(duì)象中不是存的要添加的類,而是將要添加的每種類對(duì)象實(shí)列。這個(gè)我就不寫demo了?

工廠方法模式

工廠方法模式是對(duì)靜態(tài)工廠模式的上的一種改進(jìn),我們的工廠類直接被抽象化,需要具體特定化的邏輯代碼轉(zhuǎn)移到實(shí)現(xiàn)抽象方法的子類中,這樣我們就不要再去修改工廠類(即:不用再去做什么if  else 修改)這也是我們當(dāng)前比較常用的一種方式。

還是我們以創(chuàng)建商品為例:

電商公司都是怎么用Factory mode的

看這張圖 其實(shí)就是說白了再創(chuàng)建一個(gè)工廠,用來創(chuàng)建工廠類對(duì)象

接下來我們看下代碼怎么來實(shí)現(xiàn)這個(gè)功能吧:

電商公司都是怎么用Factory mode的

這里我們先創(chuàng)建一個(gè)抽象工廠方法

電商公司都是怎么用Factory mode的

再創(chuàng)建一個(gè)商品工廠去繼承抽象工廠方法。

當(dāng)還有其他類型的時(shí)候我們只要去繼承我們創(chuàng)建的工廠方法可以了

  • 這個(gè)代碼大家肯定都能實(shí)現(xiàn)出來,但是我們真正的需要學(xué)習(xí)的是前輩們的這種工廠模式的思想。把這種思想運(yùn)用到我們真實(shí)的業(yè)務(wù)場(chǎng)景中,學(xué)以致用才能對(duì)我們有真正的提升。

我再給大家舉一個(gè)列子:學(xué)以致用

假設(shè)現(xiàn)在leader要你做一個(gè)分享商品圖片,我們知道商品的類型 有很多,比如 無SKU 商品,有SKU  商品,下單分享,邀請(qǐng)分享......等一系列的場(chǎng)景。那我們?cè)趺慈ピO(shè)計(jì)這個(gè)代碼做到更加的易懂,易讀,今后擴(kuò)展性好呢?

  • ps:sku和spu是我們電商里面的名詞,spu差不多跟item也就是商品是一個(gè)維度,一個(gè)商品item有很多sku,比如:iphone是一個(gè)商品是item  也是spu,白色的iphone 12 64G 就是一個(gè)具體的sku。

電商公司都是怎么用Factory mode的

第一步我們應(yīng)該都是定義一個(gè)創(chuàng)建分享模版

電商公司都是怎么用Factory mode的

第二步我們?cè)賱?chuàng)建一個(gè)分享工廠根據(jù)我們的類型獲取我們預(yù)先加載在Spring容器中的bean實(shí)列

電商公司都是怎么用Factory mode的

最后就是定義我們不同的類型來實(shí)現(xiàn)分享圖片。

  • 其實(shí)我們學(xué)習(xí)設(shè)計(jì)模式就是這種思想,有了這種思想 上面提到的三點(diǎn)優(yōu)勢(shì)才能體現(xiàn)出來對(duì)我們今后的成長(zhǎng),面對(duì)復(fù)雜業(yè)務(wù)設(shè)計(jì)以及思考能力才能提升。

那么問題來了,什么時(shí)候該用工廠方法模式,而非簡(jiǎn)單工廠模式呢?

  • 這里引用設(shè)計(jì)模式之美里面的一句話:當(dāng)對(duì)象的創(chuàng)建邏輯比較復(fù)雜,不只是簡(jiǎn)單的 new  一下就可以,而是要組合其他類對(duì)象,做各種初始化操作的時(shí)候,我們推薦使用工廠方法模式,將復(fù)雜的創(chuàng)建邏輯拆分到多個(gè)工廠類中,讓每個(gè)工廠類都不至于過于復(fù)雜。

  • 而使用簡(jiǎn)單工廠模式,將所有的創(chuàng)建邏輯都放到一個(gè)工廠類中,會(huì)導(dǎo)致這個(gè)工廠類變得很復(fù)雜

抽象工廠模式

看完工廠方法模式,再理解抽象工廠模式就更加簡(jiǎn)單,因?yàn)樗鋵?shí)就是工廠方法的一個(gè)延伸。

  • 工廠方法類中只有一個(gè)抽象方法,要想實(shí)現(xiàn)多種不同的類對(duì)象,只能去創(chuàng)建不同的具體工廠方法的子類來實(shí)列化,而抽象工廠  則是讓一個(gè)工廠負(fù)責(zé)創(chuàng)建多個(gè)不同類型的對(duì)象

感覺理解起來有點(diǎn)繞,我們還是來畫個(gè)圖吧

電商公司都是怎么用Factory mode的

樣子可能有點(diǎn)丑,但是能說明問題,其實(shí)看上去可以分為以上幾個(gè)部分組成:

  • 抽象工廠類

  • 具體工廠類

  • 抽象類

抽象工廠類我個(gè)人可以理解為一個(gè)剛出廠的手機(jī),具體抽象工廠這是認(rèn)為我們每個(gè)人對(duì)這個(gè)手機(jī)壁紙自定義設(shè)置,最后抽象類我理解就是手機(jī)壁紙。

我們每個(gè)人可以自定義不同壁紙比如:動(dòng)圖妹妹,靜圖風(fēng)景,小傻瓜等等。

我們想要走的更高更遠(yuǎn),那我們學(xué)習(xí)的腳步就不能一直停下,后面我可能會(huì)針對(duì)設(shè)計(jì)模式寫一個(gè)互聯(lián)網(wǎng)公司的流程引擎,來看看我們針對(duì)更復(fù)雜的業(yè)務(wù)邏輯我們?cè)趺催\(yùn)用框架去實(shí)現(xiàn)它。

以上就是電商公司都是怎么用Factory mode的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:電商公司都是怎么用Factorymode的
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article8/iidhip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、軟件開發(fā)、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、網(wǎng)站策劃全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司