日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
設(shè)計(jì)模式之工廠模式—要的是工廠而不是作坊

說(shuō)人話就是,我要什么,你就得給什么。

我們用生活中常用的支付來(lái)說(shuō)明工廠模式的實(shí)現(xiàn)邏輯。我們?cè)谟檬謾C(jī)支付的時(shí)候都會(huì)選擇支付方式,比如微信支付、支付寶支付,當(dāng)然還有其他的比如微付充支付、連連支付等等。用戶選擇了某一種支付方式,相應(yīng)的要生成支付的對(duì)象,執(zhí)行支付的方法,而這里支付對(duì)象的生成,我們交給工廠去做。

首先定義一個(gè)支付的抽象類:

抽象產(chǎn)品類

這個(gè)類的作用是標(biāo)準(zhǔn)化支付對(duì)象,規(guī)定好支付對(duì)象可以進(jìn)行的操作,那就是下單。

然后就可以具體化我們的支付對(duì)象了,這里就以微信支付和支付寶支付為例:

微信支付產(chǎn)品類

支付寶支付產(chǎn)品類

有了具體的支付產(chǎn)品類,我們就可以創(chuàng)建工廠進(jìn)行生產(chǎn)了,將微信支付和支付寶支付的支付對(duì)象給創(chuàng)建出來(lái):

工廠類

很簡(jiǎn)單,就是根據(jù)支付類型返回支付對(duì)象。

接下來(lái)做一個(gè)小測(cè)試,模擬下用戶支付,假設(shè)用戶選擇了微信支付:

測(cè)試方法

可以看到最終執(zhí)行了微信的下單方法。

OK,大功告成,可以下班啦!

但這真的是我們要的工廠模式嗎?

假如我們需要再加一種支付方式,比如連連支付,怎么整?簡(jiǎn)單啊,再加個(gè)連連支付的產(chǎn)品類,工廠類里再加個(gè)if判斷,返回連連支付的對(duì)象,不就OK了嗎?

這樣是可以實(shí)現(xiàn)的。但如果我們?cè)诠S類里進(jìn)行擴(kuò)展的時(shí)候,一不小心留個(gè)bug在里面,有可能會(huì)導(dǎo)致整個(gè)工廠類都不可用了,進(jìn)而連帶著整個(gè)支付系統(tǒng)就不可用了,這樣顯然是不合理的。實(shí)際上,這樣的工廠模式違背了一個(gè)很重要的設(shè)計(jì)原則——開(kāi)閉原則。開(kāi)閉原則就是說(shuō),當(dāng)你在擴(kuò)展程序的時(shí)候,不要改動(dòng)原有代碼,要實(shí)現(xiàn)一個(gè)熱插拔的效果。

這種工廠模式實(shí)際上稱為簡(jiǎn)單工廠模式,是一個(gè)管理混亂、雜亂無(wú)章的小作坊,而我們需要的,是一個(gè)井然有序、收放自如的現(xiàn)代化工廠。

所以,這就延伸出了另一種工廠模式——工廠方法模式。

既然在原有的工廠類上進(jìn)行擴(kuò)展是不合理的,那索性就把工廠類分開(kāi),一個(gè)支付一個(gè)工廠類,各自工廠類生產(chǎn)各自的支付對(duì)象,當(dāng)需要進(jìn)行擴(kuò)展的時(shí)候,只需新建自己的工廠類和支付產(chǎn)品類,而與其他的支付方式無(wú)關(guān),這樣就實(shí)現(xiàn)了熱插拔的效果。

于是我們的代碼可以演變?yōu)椋A粼械闹Ц冻橄箢惡椭Ц懂a(chǎn)品類,去掉工廠類,新建一個(gè)抽象工廠類,微信支付和支付寶支付各自實(shí)現(xiàn)其工廠類。

抽象工廠類

支付寶支付工廠類

微信支付工廠類

這樣就實(shí)現(xiàn)了工廠類的分離,微信支付工廠類負(fù)責(zé)生產(chǎn)微信支付的產(chǎn)品,支付寶支付工廠類負(fù)責(zé)生產(chǎn)支付寶支付的產(chǎn)品,所有工廠類各司其職,互不干擾。

測(cè)試一下:

這樣,工廠方法模式就實(shí)現(xiàn)了,這其實(shí)也是我們平時(shí)用的最多的模式,平時(shí)所說(shuō)工廠模式實(shí)際就是指的工廠方法模式。當(dāng)然,工廠模式還有抽象工廠方法模式,這是比小作坊、小工廠更加高級(jí)的超級(jí)工廠模式,實(shí)現(xiàn)起來(lái)比較繁瑣,平時(shí)也基本用不到,這里就不細(xì)說(shuō)了。


分享標(biāo)題:設(shè)計(jì)模式之工廠模式—要的是工廠而不是作坊
標(biāo)題URL:http://www.dlmjj.cn/article/cceejis.html