国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

javascript設(shè)計模式 ? 抽象工廠模式原理與應(yīng)用實(shí)例分析

瀏覽:7日期:2023-11-04 18:07:53

本文實(shí)例講述了javascript設(shè)計模式 ? 抽象工廠模式原理與應(yīng)用。分享給大家供大家參考,具體如下:

介紹:基于工廠模式,繼續(xù)升級。來解決工廠模式存在多個工廠類的問題。主要的思想是將一些相關(guān)的產(chǎn)品組成一個產(chǎn)品族,由同一個工廠來統(tǒng)一生產(chǎn)。

定義:抽象工廠模式提供一個創(chuàng)建一系列相關(guān)或相互依賴的接口,而無須指定他們具體的類。抽象工廠模式又稱kit模式,它是一種對象創(chuàng)建型模式。

場景:還是上面的Dialog類,如果繼續(xù)向后發(fā)展,會有各種各樣的彈窗,如果新增一個彈窗包含了notice和toast。這樣的情況下,我們不需要再單獨(dú)新增一個工廠類。我們需要對這一類具有同樣特征的彈窗進(jìn)行聚合。

示例:

var Dialog = function(){ this.show = function(){ console.log(this.name + ’ is show -> ’ + this.element); }}; Dialog.createNotice = function(){ var _dialog = new Dialog(); _dialog.element = ’<div>notice</div>’; _dialog.name = ’notice’; return _dialog;}; Dialog.createToast = function(){ var _dialog = new Dialog(); _dialog.element = ’<div>toast</div>’; _dialog.name = ’toast’; return _dialog;}; Dialog.createWarnin = function(){ var _dialog = new Dialog(); _dialog.element = ’<div>warnin</div>’; _dialog.name = ’warnin’; return _dialog;}; var Factory = {}; Factory.ConvergeFactory = function(){ return { getNotice: function(){ return Dialog.createNotice(); }, getToast: function(){ return Dialog.createToast(); }, getWarnin: function(){ return Dialog.createWarnin(); } }} var converge = Factory.ConvergeFactory();var notice = converge.getNotice();var toast = converge.getToast();var warnin = converge.getWarnin();notice.show(); //notice is show -> <div>notice</div>toast.show(); //toast is show -> <div>toast</div>warnin.show(); //warnin is show -> <div> warnin </div>

抽象工廠模式主要解決的是Factory過多的問題,經(jīng)過組合產(chǎn)生新的產(chǎn)品族。

我們這里的舉例有些牽強(qiáng),換個場景,如果我們有很多按鈕啊,輸入框之類的組件,要通過單獨(dú)的工廠進(jìn)行獲取實(shí)例。

抽象工廠模式就是將特定的組件經(jīng)過聚合產(chǎn)生新的工廠。

但這樣的結(jié)果好還是不好,增加新的產(chǎn)品族時遵守了開關(guān)原則,但是在對新的產(chǎn)品族結(jié)構(gòu)進(jìn)行修改時就會發(fā)現(xiàn)需要從業(yè)務(wù)到工廠到子類挨個修改,也違反了開關(guān)原則。

所以抽象工廠模式的使用場景需要特別嚴(yán)謹(jǐn),要在設(shè)計之初全面考慮,不要輕易對產(chǎn)品族結(jié)構(gòu)進(jìn)行修改。

抽象工廠模式總結(jié):

優(yōu)點(diǎn):* 當(dāng)產(chǎn)品族被使用后,隔離了具體類的實(shí)現(xiàn)* 新增產(chǎn)品族時很方便,無需修改已有結(jié)構(gòu),符合開關(guān)原則

缺點(diǎn):* 修改已有產(chǎn)品族結(jié)構(gòu)時,需要修改工廠以及所有使用的業(yè)務(wù)代碼。

前面我們介紹了三種工廠模式,在前端使用的過程中,要靈活的應(yīng)用,使用其思想而不是生搬硬套。

工廠模式核心是通過不同參數(shù)來生成不同產(chǎn)品。抽象工廠和工廠是在實(shí)際場景下進(jìn)行優(yōu)化而來。

這也提醒我們,要不斷地對代碼進(jìn)行思考,進(jìn)行優(yōu)化。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 热99re久久精品精品免费 | 毛片毛片毛是个毛毛片 | 亚洲三级大片 | 欧美怡红院免费的视频 | 国产盗摄一区二区三区 | 午夜精品同性女女 | 国内自拍视频一区二区三区 | 手机av在线播放 | 久久精品亚洲精品一区 | 亚洲高清在线观看播放 | 久久久久久久国产 | 亚洲国产二区三区 | 日韩一区二区三区免费视频 | 国产亚洲欧美另类久久久 | 久久国产精品免费视频 | 久草观看 | 97在线观看完整免费 | 欧美三级做爰在线 | 免费一级淫片aaa片毛片a级 | 久久香蕉国产线看观看亚洲片 | 亚洲人成网址在线观看 | 久草在线观看视频 | 日本全黄 | 在线观看偷拍视频一区 | 农村三级孕妇视频在线 | 免费一级特黄 欧美大片 | 久久精品国产亚洲片 | 在线观看一区二区三区视频 | 欧美精品不卡 | 成人性版蝴蝶影院污 | 亚洲第一在线播放 | 色综合久久久久久久 | www.亚洲免费 | 五月激激激综合网色播免费 | 毛片网站在线播放 | 国产三级国产精品 | 欧美高清免费精品国产自 | 欧美成人高清手机在线视频 | 精品特级一级毛片免费观看 | 欧美aav| 国产精品久久精品视 |