欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS基于設(shè)計(jì)模式中的單例模式(Singleton)實(shí)現(xiàn)封裝對(duì)數(shù)據(jù)增刪改查功能

 更新時(shí)間:2018年02月06日 08:47:02   作者:itpinpai  
這篇文章主要介紹了JS基于設(shè)計(jì)模式中的單例模式(Singleton)實(shí)現(xiàn)封裝對(duì)數(shù)據(jù)增刪改查功能.結(jié)合實(shí)例形式分析了javascript基于單例模式結(jié)合ajax針對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了JS基于設(shè)計(jì)模式中的單例模式(Singleton)實(shí)現(xiàn)封裝對(duì)數(shù)據(jù)增刪改查功能。分享給大家供大家參考,具體如下:

單例模式

單例模式的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例

單例模式最初的定義出現(xiàn)于《設(shè)計(jì)模式》(艾迪生維斯理, 1994):“保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。”

單例模式定義:“一個(gè)類有且僅有一個(gè)實(shí)例,并且自行實(shí)例化向整個(gè)系統(tǒng)提供。

var Singleton = (function(){
 SingletonClass() {
 }
 var singleton = null;
 return {
  getInstance: function() {
   if (singleton == null) {
  singleton = new singletonClass();
   } else {
  return singleton;
   }
  }
 }
})();
Singleton.getIntance();

前端經(jīng)常用到一些和接口相關(guān)的增刪改查異步操作。我們來(lái)舉例,我在操作數(shù)據(jù)列表時(shí),常常少不了,增加 修改 刪除功能。有的方案是用同步的(刷新頁(yè)面),用戶體驗(yàn)好一些用異步;

代碼如下

增加功能

$(".add").click(function(){
  $.ajax({
  type: "post"
    dataType:"json",
    url: "http://www.dbjr.com.cn/",
    data: {name:"csdn博客",dir:"web前端"},
    success: function( result ){
    if ( result.status ) { alert("新增成功!") } else { alert("新增失敗") }
  },
    error: function(){
    alert("新增出現(xiàn)異步,請(qǐng)得新增加或聯(lián)系技術(shù)管理員");
  }
  });
});

刪除功能

$(".del").click(function(){
  $.ajax({
  type: "post"
    dataType:"json",
    url: "http://www.dbjr.com.cn/",
    data: {id:"1"},
    success: function( result ){
    if ( result.status ) { alert("刪除成功!") } else { alert("刪除失敗") }
  },
    error: function(){
    alert("新增出現(xiàn)異步,請(qǐng)得新增加或聯(lián)系技術(shù)管理員");
  }
  });
});

上面這二個(gè)代碼片段簡(jiǎn)單描述了,增加和刪除功能的JS代碼。有的同學(xué)發(fā)現(xiàn)了,他們有共同點(diǎn),就是ajax請(qǐng)求中有一部分是相同的,并且刪除功能如果在其它地方也用到呢?,那在其它地方也要寫(xiě)一代碼這種相同的代碼。感覺(jué)很不舒服

我們改進(jìn)一下

var SingletonCRUD = (function(){
 SingletonClass() {}
 SingletonClass.prototype = {
   constructor: SingletonClass,
   add: function( data ) {
  $.ajax({
   type: "post"
     dataType:"json",
     url: "http://www.dbjr.com.cn/",
     data: data,
     success: function( result ){
    if ( result.status ) { alert("新增成功!") } else { alert("新增失敗") }
   },
     error: function(){
    alert("新增出現(xiàn)異步,請(qǐng)得新增加或聯(lián)系技術(shù)管理員");
   }
    });
   },
  remove: function( data ) {
  $.ajax({
   type: "post"
     dataType:"json",
     url: "http://www.dbjr.com.cn/",
     data: data,
     success: function( result ){
    if ( result.status ) { alert("刪除成功!") } else { alert("刪除失敗") }
   },
     error: function(){
    alert("新增出現(xiàn)異步,請(qǐng)得新增加或聯(lián)系技術(shù)管理員");
   }
    });
   }
 }
 var singleton = null;
 return {
  getInstance: function() {
   if (singleton == null) {
  singleton = new singletonClass();
   } else {
  return singleton;
   }
  }
 }
})();
var curd = SingletonCRUD.getIntance();
$(".add").click(function(){
  var data = {"name":"name"};
  curd.add( data );
});
$(".del").click(function(){
  var data = {"id": 1};
  curd.remove( data );
});

經(jīng)常用Singleton實(shí)例來(lái)做一些Tool工具類;

使用設(shè)計(jì)模式優(yōu)點(diǎn):解耦合、可讀性強(qiáng)、代碼結(jié)構(gòu)清晰;

通過(guò)上面的小例子,把點(diǎn)擊事件里的獲取數(shù)據(jù)(click的事件函數(shù))和操作數(shù)據(jù)(ajax請(qǐng)求)相分離;

通過(guò)對(duì)單例模式的優(yōu)化后的代碼:

var SingletonCRUD = (function(){
 SingletonClass() {}
 SingletonClass.prototype = {
   constructor: SingletonClass,
   ajax: function(url, data success ){
  $.ajax({
   type: "post"
     dataType:"json",
     url: url,
     data: data,
     success: success,
     error: function(){
    alert("新增出現(xiàn)異步,請(qǐng)得新增加或聯(lián)系技術(shù)管理員");
   }
    });
   },
   add: function( data ) {
  this.ajax("http://www.dbjr.com.cn/", data, function( result ){
    if ( result.status ) { alert("新增成功!") } else { alert("新增失敗") }
  });
   },
  remove: function( data ) {
  this.ajax("http://www.dbjr.com.cn/", data, function( result ){
    if ( result.status ) { alert("刪除成功!") } else { alert("刪除失敗") }
  });
   }
 }
 var singleton = null;
 return {
  getInstance: function() {
   if (singleton == null) {
  singleton = new singletonClass();
   } else {
  return singleton;
   }
  }
 }
})();

SingleClass中的ajax方法,也相當(dāng)于一個(gè)門(mén)面模式(Facade),隱藏內(nèi)部細(xì)節(jié),對(duì)外暴露一個(gè)接口;

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

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

相關(guān)文章

  • 微信小程序使用audio組件播放音樂(lè)功能示例【附源碼下載】

    微信小程序使用audio組件播放音樂(lè)功能示例【附源碼下載】

    這篇文章主要介紹了微信小程序使用audio組件播放音樂(lè)功能,結(jié)合實(shí)例形式分析了微信小程序audio組件播放在線音樂(lè)相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2017-12-12
  • 淺談Webpack 是如何加載模塊的

    淺談Webpack 是如何加載模塊的

    這篇文章主要介紹了Webpack 是如何加載模塊的,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • ionic隱藏tabs的方法

    ionic隱藏tabs的方法

    這篇文章主要為大家詳細(xì)介紹了ionic隱藏tabs的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JavaScript實(shí)現(xiàn)簡(jiǎn)潔的俄羅斯方塊完整實(shí)例

    JavaScript實(shí)現(xiàn)簡(jiǎn)潔的俄羅斯方塊完整實(shí)例

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)潔的俄羅斯方塊,以完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)俄羅斯方塊游戲的具體技巧,代碼備有詳盡的注釋便于理解,需要的朋友可以參考下
    2016-03-03
  • JavaScript數(shù)據(jù)結(jié)構(gòu)yocto queue隊(duì)列鏈表代碼分析

    JavaScript數(shù)據(jù)結(jié)構(gòu)yocto queue隊(duì)列鏈表代碼分析

    這篇文章主要為大家介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)yocto queue隊(duì)列鏈表代碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 小程序?qū)崿F(xiàn)懸浮搜索框

    小程序?qū)崿F(xiàn)懸浮搜索框

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)懸浮搜索框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • TBCompressor js代碼壓縮

    TBCompressor js代碼壓縮

    公司原先的JS和CSS文件都是用在線壓縮程序壓縮的,看似方便,但很容易出錯(cuò),可能是壓縮程序把CSS里面的一些Hack語(yǔ)句給混淆了,于是我決定用大名鼎鼎的YUI compressor。
    2011-01-01
  • echarts實(shí)現(xiàn)餅圖與樣式設(shè)置

    echarts實(shí)現(xiàn)餅圖與樣式設(shè)置

    這篇文章介紹了echarts實(shí)現(xiàn)餅圖與樣式設(shè)置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • js操作瀏覽器的參數(shù)方法

    js操作瀏覽器的參數(shù)方法

    下面小編就為大家?guī)?lái)一篇js操作瀏覽器的參數(shù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 詳解JS模塊導(dǎo)入導(dǎo)出

    詳解JS模塊導(dǎo)入導(dǎo)出

    這篇文章主要介紹了詳解JS模塊導(dǎo)入導(dǎo)出以及相關(guān)問(wèn)題解決方法,需要的朋友學(xué)習(xí)參考下吧。
    2017-12-12

最新評(píng)論