最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript設計模式 – 抽象工廠模式原理與應用實例分析

 更新時間:2020年04月09日 09:29:17   作者:李小強  
這篇文章主要介紹了javascript設計模式 – 抽象工廠模式,結合實例形式分析了javascript抽象工廠模式相關概念、原理、定義、應用場景及操作注意事項,需要的朋友可以參考下

本文實例講述了javascript設計模式 – 抽象工廠模式原理與應用。分享給大家供大家參考,具體如下:

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

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

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

示例:

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過多的問題,經過組合產生新的產品族。

我們這里的舉例有些牽強,換個場景,如果我們有很多按鈕啊,輸入框之類的組件,要通過單獨的工廠進行獲取實例。

抽象工廠模式就是將特定的組件經過聚合產生新的工廠。

但這樣的結果好還是不好,增加新的產品族時遵守了開關原則,但是在對新的產品族結構進行修改時就會發(fā)現需要從業(yè)務到工廠到子類挨個修改,也違反了開關原則。

所以抽象工廠模式的使用場景需要特別嚴謹,要在設計之初全面考慮,不要輕易對產品族結構進行修改。

抽象工廠模式總結:

優(yōu)點:
* 當產品族被使用后,隔離了具體類的實現
* 新增產品族時很方便,無需修改已有結構,符合開關原則

缺點:
* 修改已有產品族結構時,需要修改工廠以及所有使用的業(yè)務代碼。

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

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

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

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

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

相關文章

  • JavaScript Typescript基礎使用教程

    JavaScript Typescript基礎使用教程

    TypeScript是Microsoft(微軟)開發(fā)的一種開源編程語言,它充分利用了JavaScript原有的對象模型,并在此基礎上進行了擴充,TypeScript設計目標是開發(fā)大型應用,它可以編譯成純JavaScript,編譯出來的JavaScript可以運行在任何一種JS運行環(huán)境中
    2022-12-12
  • 基于javascript實現根據身份證號碼識別性別和年齡

    基于javascript實現根據身份證號碼識別性別和年齡

    這篇文章主要介紹了基于javascript實現根據身份證號碼識別性別和年齡的相關資料,需要的朋友可以參考下
    2016-01-01
  • JavaScript中的finally()方法和Filter()方法詳解

    JavaScript中的finally()方法和Filter()方法詳解

    finally是 JavaScript 構造中使用的方法try-catch,Filter() 是 JavaScript 中的一種方法,可以通過處理數組輕松提供過濾后的輸出數據,本文就給大家詳細的介紹一下JavaScript中的finally()方法和Filter()方法,需要的朋友可以參考下
    2023-08-08
  • IE下js調試工具Companion.JS

    IE下js調試工具Companion.JS

    做web開發(fā)的朋友都清楚,js程序的調試是相當郁悶的,因為首先這種語言語法比較靈活,它是一種弱類型的腳本語言,很多錯誤是無法控制的。
    2010-10-10
  • JavaScript實現的多個圖片廣告交替顯示效果代碼

    JavaScript實現的多個圖片廣告交替顯示效果代碼

    這篇文章主要介紹了JavaScript實現的多個圖片廣告交替顯示效果代碼,涉及javascript數組遍歷及頁面元素動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 新發(fā)現一個騙鏈接的方法(js讀取cookies)

    新發(fā)現一個騙鏈接的方法(js讀取cookies)

    新發(fā)現一個騙鏈接的方法(js讀取cookies),需要的朋友可以參考下。
    2012-01-01
  • 如何利用原生JS實現觸摸滑動監(jiān)聽事件

    如何利用原生JS實現觸摸滑動監(jiān)聽事件

    這篇文章主要給大家介紹了關于如何利用原生JS實現觸摸滑動監(jiān)聽事件的相關資料,文中將實現的原理以及代碼介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • vue2.x的深入學習--關于h函數的說明

    vue2.x的深入學習--關于h函數的說明

    下面小編就為大家分享一篇基于h函數詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-08-08
  • JavaScript new對象的四個過程實例淺析

    JavaScript new對象的四個過程實例淺析

    這篇文章主要介紹了JavaScript new對象的四個過程,結合實例形式簡單分析了javascript面向對象程序設計中new對象的四個過程相關原理與實現方法,需要的朋友可以參考下
    2018-07-07
  • JS實現上下左右對稱的九九乘法表

    JS實現上下左右對稱的九九乘法表

    九九乘法表使用很多種語言都可以實現,本文給大家介紹js使用for、while循環(huán)來完成四種對稱的九九乘法表,對九九乘法表需要的朋友參考下
    2016-02-02

最新評論

贵阳市| 松滋市| 中超| 邵东县| 梧州市| 汽车| 琼中| 安西县| 内江市| 岳池县| 安岳县| 彭山县| 新野县| 南汇区| 行唐县| 区。| 云和县| 宣化县| 元朗区| 大姚县| 丰城市| 三江| 宝兴县| 广德县| 丰宁| 桑植县| 高青县| 时尚| 隆回县| 托克逊县| 蒙自县| 盐城市| 墨竹工卡县| 虹口区| 德昌县| 左云县| 德安县| 合江县| 堆龙德庆县| 克东县| 郓城县|