日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:28日期:2023-11-05 09:05:40

本文實例講述了javascript設(shè)計模式 ? 簡單工廠模式。分享給大家供大家參考,具體如下:

介紹:簡單工廠模式是最常用的一類創(chuàng)建型設(shè)計模式。其中簡單工廠模式并不屬于GoF23個經(jīng)典設(shè)計模式,它通常被作為學(xué)習(xí)其他工廠模式的基礎(chǔ)。

定義:定義一個工廠類,它可以根據(jù)參數(shù)的不同返回不同的實例,被創(chuàng)建的實例通常都具有相同的父類,因為在簡單工廠模式中創(chuàng)建實例的方法是靜態(tài)方法,因此簡單工廠模式又被稱為靜態(tài)工廠方法模式,它屬于類創(chuàng)建型模式。

場景:我們需要寫一個dialog工具類,在項目初期我們只需要考慮一個簡單的彈窗實現(xiàn),項目持續(xù)迭代,會衍生出各種類型的彈窗,帶關(guān)閉按鈕的,帶確認(rèn)按鈕的…..

我見到最多的做法是根據(jù)一個type值來判斷當(dāng)前需要彈什么類型的窗口,這樣的設(shè)計我之前沒覺得有問題,但是看了前面介紹的設(shè)計原則,我們也來分析下這么做的缺點:

1. 存在多個if…else…代碼塊,代碼冗長,閱讀困難,維護困難,測試?yán)щy,影響系統(tǒng)性能。2. dialog類職責(zé)過重,負(fù)責(zé)初始化所有彈窗實例,違反了單一職責(zé)原則,不利于重用和維護。3. 當(dāng)需要新增彈窗類型是,必須修改源代碼,違反了開關(guān)原則。4. 不同種類彈窗基礎(chǔ)樣式相同,會導(dǎo)致存在大量重復(fù)代碼。5. 各類彈窗的創(chuàng)建和使用都是在各個業(yè)務(wù)邏輯中,如果我想修改創(chuàng)建方式必須修改所有業(yè)務(wù)代碼,違反了開關(guān)原則

示例:

var Dialog = (function(){ var createNotice = function(){ return ’<div>notice</div>’; } var createToast = function(){ return ’<div>toast</div>’; } var createWarnin = function(){ return ’<div>warnin</div>’; } var Dialog = function(){ this.element = ’’; this.name = ’’; this.show = function(){ console.log(this.name + ’ is show -> ’ + this.element); }; } return { factory: function(arg){ var _dialog; if(arg === ’notice’){ _dialog = new Dialog(); _dialog.element = createNotice(); _dialog.name = ’notice’; }else if(arg === ’toast’){ _dialog = new Dialog(); _dialog.element = createToast(); _dialog.name = ’toast’; }else if(arg === ’warnin’){ _dialog = new Dialog(); _dialog.element = createWarnin(); _dialog.name = ’warnin’; } return _dialog; } }})(); var notice = Dialog.factory(’notice’);var toast = Dialog.factory(’toast’);var warnin = Dialog.factory(’warnin’);toast.show(); //toast is show -> <div>toast</div>notice.show(); //notice is show -> <div>notice</div>warnin.show(); //warnin is show -> <div>warnin</div>

以上的解決方案是自己理解著寫的,對照著java的示例寫了一個,實現(xiàn)的方式有很多種,你可以用原型鏈,用繼承來實現(xiàn)都可以。我們這里主要討論下為什么要這么寫。

之前我們列出了5個缺點:我們主要解決了2,4和5,將共有的方法屬性抽取出來寫在父類上,減少了重復(fù)代碼,將每種情況特有的代碼抽取出來,解決了不符合單一職責(zé)原則的問題。

重要的是將所有彈窗的創(chuàng)建集中在工廠類中,當(dāng)有修改時,只需要修改工廠類即可,不會影響業(yè)務(wù)代碼。

這里我們思考一下:1.如何去掉那些if…else…? 2.當(dāng)我要新增一個error類型的彈窗時如何滿足開關(guān)原則?

我自己試了一下:

var Dialog = function(){ this.element = ’’; this.name = ’’; this.show = function(){ console.log(this.name + ’ is show -> ’ + this.element); };} Dialog.createNotice = function(){ return ’<div>notice</div>’; };Dialog.createToast = function(){ return ’<div>toast</div>’; };Dialog.createWarnin = function(){ return ’<div>warnin</div>’; };Dialog.factory = function(arg){ var _dialog = new Dialog(); _dialog.element = Dialog[arg](); _dialog.name = arg; return _dialog;}; var notice = Dialog.factory(’createNotice’);var toast = Dialog.factory(’createToast’);var warnin = Dialog.factory(’createWarnin’);notice.show(); //createNotice is show -> <div>notice</div>warnin.show(); //createWarnin is show -> <div>warnin</div>toast.show(); //createToast is show -> <div>toast</div>

這樣當(dāng)我做新增時,只需要要新增一條配置即可,不用去對公告內(nèi)容做修改。滿足了開關(guān)原則的對擴展支持對修改關(guān)閉。

簡單工廠模式總結(jié):

優(yōu)點:* 簡單工廠模式實現(xiàn)了對象創(chuàng)建和使用的分離

缺點:* 工廠模式集中了所有產(chǎn)品的創(chuàng)建邏輯,職責(zé)過重,一旦出現(xiàn)問題會影響到整個系統(tǒng)

適用場景:* 適用于創(chuàng)建的對象比較少,由于創(chuàng)建的對象較少,不會造成工廠方法中的業(yè)務(wù)邏輯太過復(fù)雜* 客戶端只知道傳入工廠類的參數(shù),對于如何創(chuàng)建對象并不關(guān)心

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

更多關(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é)運算用法總結(jié)》

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

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
另类欧美日韩国产在线| 久久97久久97精品免视看秋霞| 日韩精品免费观看视频| 蜜桃成人av| 九九在线精品| 一区在线免费| 九九久久婷婷| 日韩午夜在线| 男人操女人的视频在线观看欧美| 亚洲天堂av影院| 日韩一区二区在线免费| 亚洲成人二区| 亚洲免费观看| 亚洲综合激情在线| 日韩精品欧美大片| 亚洲精品自拍| 国产精品久久久久毛片大屁完整版| 国产欧美一级| 综合日韩av| 亚洲国产一区二区三区在线播放| 99亚洲视频| 日韩激情综合| 国语精品一区| 亚洲欧洲一区二区天堂久久| 蜜桃传媒麻豆第一区在线观看| 日韩精品久久理论片| 日韩激情综合| 日韩中文视频| 日本成人精品| 99久久婷婷| 在线看片日韩| 国产极品模特精品一二| 欧美日韩水蜜桃| 欧美亚洲人成在线| 亚洲无线一线二线三线区别av| 亚洲精品三级| 久久激情婷婷| 久久超级碰碰| 亚洲视频播放| 日韩欧美国产精品综合嫩v| 亚洲精品影视| 伊人精品一区| 老鸭窝一区二区久久精品| 亚洲免费观看| 天堂√中文最新版在线| 免费在线观看日韩欧美| 国产一区二区三区亚洲综合| 石原莉奈在线亚洲二区| 国产色播av在线| 日韩av资源网| 亚洲九九精品| 国产精品av一区二区| 国产成人调教视频在线观看| 日本免费一区二区视频| 亚洲欧洲另类| 日韩视频一区| 女同性一区二区三区人了人一| 国产成人77亚洲精品www| 欧美日本三区| 欧美一区免费| 免费在线视频一区| 在线视频日韩| 精品1区2区3区4区| 午夜国产精品视频| 国产农村妇女精品一区二区| 美女在线视频一区| 欧美激情视频一区二区三区免费| 日本一区中文字幕| 午夜性色一区二区三区免费视频| 日韩中文字幕不卡| 首页亚洲欧美制服丝腿| 视频一区国产视频| 婷婷视频一区二区三区| 国产图片一区| 麻豆视频久久| 国产一区日韩| 欧美影院视频| 卡一卡二国产精品| 神马久久午夜| 午夜久久久久| 日韩精品成人| 国产在线观看91一区二区三区| 麻豆国产精品777777在线| 精品网站999| 欧美特黄一级大片| 影音先锋久久精品| 国产精成人品2018| 久久精品国产大片免费观看| 激情91久久| 国产精品天天看天天狠| 天堂中文在线播放| 亚洲性视频h| 欧美一区91| av亚洲一区二区三区| 夜久久久久久| 成人黄色av| 亚洲精品在线影院| 亚洲天堂一区二区| 国产欧美丝祙| 色一区二区三区| 国产日产精品一区二区三区四区的观看方式| 天堂成人国产精品一区| 午夜精品影视国产一区在线麻豆| 麻豆视频久久| 亚洲一二av| 三级在线看中文字幕完整版| 91超碰国产精品| 国产精品久久| 久久福利精品| 国内揄拍国内精品久久| 中文字幕一区二区三区四区久久 | 在线精品一区| 天堂日韩电影| 另类欧美日韩国产在线| 亚洲精品影视| 亚洲二区视频| 麻豆视频久久| 国产精品啊啊啊| 视频一区日韩| 亚洲理论在线| 天堂成人国产精品一区| 91精品电影| 91精品福利| 欧美日韩国产亚洲一区| 日韩成人亚洲| 欧美成人基地| 蜜桃精品在线| 欧美日一区二区| 欧美日韩国产探花| 亚洲专区在线| 免费高清在线一区| 91精品推荐| 亚洲高清av| 亚洲精华国产欧美| 夜夜精品视频| 在线精品一区| 国产精品www994| 91亚洲国产高清| 欧美日韩水蜜桃| 欧美专区一区二区三区| 视频一区二区不卡| 热久久久久久| 久久久久亚洲精品中文字幕| 激情综合五月| 在线日韩欧美| 视频一区日韩| 国产伦精品一区二区三区视频| 国产激情综合| 欧美亚洲国产精品久久| 在线亚洲观看| 国产欧美日韩亚洲一区二区三区| 精品入口麻豆88视频| 高清不卡亚洲| 野花国产精品入口| 欧美日本精品| 97se综合| 丝袜美腿高跟呻吟高潮一区| 国产日韩欧美一区在线| 91亚洲国产| 午夜宅男久久久| 麻豆精品在线视频| 久久男人天堂| 亚洲人成网站在线在线观看| 国产精品sss在线观看av| 久久久精品久久久久久96| 日韩精品久久久久久久软件91| 国产欧洲在线| 婷婷综合电影| 蜜桃精品在线| 麻豆91在线播放| 蜜臀a∨国产成人精品| 樱桃视频成人在线观看| 91精品美女| 石原莉奈在线亚洲二区| 性感美女一区二区在线观看| 久久狠狠亚洲综合| 一区二区三区视频免费观看| 国产精品观看| 最近国产精品视频| 午夜国产精品视频免费体验区| 麻豆国产精品视频| 日韩精彩视频在线观看| 久久中文视频| 麻豆一区二区99久久久久| 亚洲精品一级| 午夜一级久久| 99热国内精品| 麻豆精品蜜桃| 麻豆视频久久| 欧美激情久久久久久久久久久| 中文字幕亚洲影视| 久久裸体视频| 日韩在线第七页| 色婷婷综合网| 都市激情国产精品| 日本在线高清| 精品一区欧美| 一区三区视频| 日韩在线卡一卡二| 免费黄网站欧美|