电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

場景:還是上面的Dialog類,如果繼續(xù)向后發(fā)展,會有各種各樣的彈窗,如果新增一個(gè)彈窗包含了notice和toast。這樣的情況下,我們不需要再單獨(dú)新增一個(gè)工廠類。我們需要對這一類具有同樣特征的彈窗進(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),換個(gè)場景,如果我們有很多按鈕啊,輸入框之類的組件,要通過單獨(dú)的工廠進(jìn)行獲取實(shí)例。

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

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

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

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

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

缺點(diǎn):* 修改已有產(chǎn)品族結(jié)構(gòu)時(shí),需要修改工廠以及所有使用的業(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錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 小型数控车床-数控车床厂家-双头数控车床| 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 拖链电缆_柔性电缆_伺服电缆_坦克链电缆-深圳市顺电工业电缆有限公司 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 |