成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

javascript中工廠模式的原理分析

本篇文章給大家分享的是有關(guān)javascript中工廠模式的原理分析,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)成立與2013年,先為宣漢等服務(wù)建站,宣漢等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為宣漢企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

介紹:前面我們介紹了簡單工廠模式,簡單工廠模式存在一個嚴(yán)重的問題:當(dāng)需要擴(kuò)展時必定要修改工廠類的源代碼。我們雖然在第二個demo中做了一些優(yōu)化,但是我們需在使用時明確指定執(zhí)行方法的名字,這無疑提高了使用成本。那如何實(shí)現(xiàn)增加新產(chǎn)品而不影響已有代碼?工廠模式應(yīng)運(yùn)而生。

定義:定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實(shí)例化。工廠模式讓一個類的實(shí)例化延遲到其子類。工廠模式又稱為工廠方法模式,又可稱為虛擬構(gòu)造器模式或多態(tài)工廠模式。工廠模式是一種類創(chuàng)建型模式。

場景:還是基于簡單工廠模式的場景,我們試著用工廠模式解決彈窗類的問題。

示例:

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.NoticeFactory = function(){
  return Dialog.createNotice();
}
 
Factory.ToastFactory = function(){
  return Dialog.createToast();
}
 
Factory.WarninFactory = function(){
  return Dialog.createWarnin();
}
 
var notice = Factory.NoticeFactory();
var toast = Factory.ToastFactory();
var warnin = Factory.WarninFactory();
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ìn)行拆分

交由其子類也就是createToast方法實(shí)現(xiàn)

而將所有工廠入口拆成獨(dú)立工廠類,之前的簡單工廠模式在新增時需要修改工廠類,違反了開關(guān)原則

工廠模式保證新增時只做添加不做修改

項(xiàng)目足夠大時,你可以將Factory和Dialog的子類拆成文件進(jìn)行管理

在寫工廠模式的這段時間,查了一些資料,發(fā)現(xiàn)每個人都有自己的理解

看到的一些工廠模式的demo更像是我們前面介紹簡單工廠模式,為什么呢?

我們的demo參考的是java的書籍,這里面包含了抽象類這個概念,在前端只能靠自己的理解去描述

所以我們盡力通過一些差別來具體的介紹每一種模式

這里面的例子可能不是特別嚴(yán)謹(jǐn),我后面會慢慢優(yōu)化,寫的詳細(xì)一些只有一個目的

當(dāng)有一天有人問我簡單工廠模式和工廠模式的區(qū)別在哪,我希望我能給出一個我的理解

工廠模式總結(jié):

優(yōu)點(diǎn):
* 增加新產(chǎn)品時,無需修改已存在的代碼
* 只暴露工廠類,對具體實(shí)現(xiàn)封裝在內(nèi)部,使用時無需關(guān)注內(nèi)部使用

缺點(diǎn):
* 新增時還是需要新增具體實(shí)現(xiàn)以及提供具體的工廠類,一定程度增加了系統(tǒng)復(fù)雜度,會帶來一些額外開銷
* 每個工廠只生產(chǎn)一種產(chǎn)品,會導(dǎo)致存在大量的工廠類,大大增加了系統(tǒng)的維護(hù)成本和運(yùn)行開銷

以上就是javascript中工廠模式的原理分析,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:javascript中工廠模式的原理分析
標(biāo)題路徑:http://jinyejixie.com/article40/ghosho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、做網(wǎng)站、標(biāo)簽優(yōu)化網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
昌吉市| 玉林市| 雷波县| 故城县| 全州县| 苗栗市| 宣武区| 抚宁县| 湖南省| 堆龙德庆县| 简阳市| 枣阳市| 济宁市| 肇东市| 门源| 松潘县| 铜山县| 乌鲁木齐县| 井陉县| 旬阳县| 玉山县| 保定市| 子长县| 湘阴县| 三河市| 卫辉市| 巨鹿县| 霍林郭勒市| 三门县| 清丰县| 华坪县| 武川县| 鸡西市| 洛浦县| 鸡泽县| 邳州市| 昌平区| 玛曲县| 鹤庆县| 梁山县| 将乐县|