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

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

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

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

單例模式

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

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

單例模式定義:“一個類有且僅有一個實例,并且自行實例化向整個系統(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)的增刪改查異步操作。我們來舉例,我在操作數(shù)據(jù)列表時,常常少不了,增加 修改 刪除功能。有的方案是用同步的(刷新頁面),用戶體驗好一些用異步;

代碼如下

增加功能

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

刪除功能

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

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

我們改進(jìn)一下

var SingletonCRUD = (function(){
 SingletonClass() {}
 SingletonClass.prototype = {
   constructor: SingletonClass,
   add: function( data ) {
  $.ajax({
   type: "post"
     dataType:"json",
     url: "http://www.fzitv.net/",
     data: data,
     success: function( result ){
    if ( result.status ) { alert("新增成功!") } else { alert("新增失敗") }
   },
     error: function(){
    alert("新增出現(xiàn)異步,請得新增加或聯(lián)系技術(shù)管理員");
   }
    });
   },
  remove: function( data ) {
  $.ajax({
   type: "post"
     dataType:"json",
     url: "http://www.fzitv.net/",
     data: data,
     success: function( result ){
    if ( result.status ) { alert("刪除成功!") } else { alert("刪除失敗") }
   },
     error: function(){
    alert("新增出現(xiàn)異步,請得新增加或聯(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實例來做一些Tool工具類;

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

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

通過對單例模式的優(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)異步,請得新增加或聯(lián)系技術(shù)管理員");
   }
    });
   },
   add: function( data ) {
  this.ajax("http://www.fzitv.net/", data, function( result ){
    if ( result.status ) { alert("新增成功!") } else { alert("新增失敗") }
  });
   },
  remove: function( data ) {
  this.ajax("http://www.fzitv.net/", 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)于一個門面模式(Facade),隱藏內(nèi)部細(xì)節(jié),對外暴露一個接口;

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

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

相關(guān)文章

  • javaScript產(chǎn)生隨機數(shù)的用法小結(jié)

    javaScript產(chǎn)生隨機數(shù)的用法小結(jié)

    這篇文章主要介紹了javaScript產(chǎn)生隨機數(shù)的用法小結(jié),包括JavaScript Math.random()內(nèi)置函數(shù) ,Js 隨機數(shù)產(chǎn)生6位數(shù)字的代碼,需要的朋友可以參考下
    2018-04-04
  • 基于JS實現(xiàn)右側(cè)緩慢彈窗動態(tài)效果

    基于JS實現(xiàn)右側(cè)緩慢彈窗動態(tài)效果

    在現(xiàn)代Web開發(fā)中,動態(tài)交互效果是提升用戶體驗的重要手段之一,其中,從頁面右側(cè)緩慢滑出的彈窗效果因其不遮擋主要內(nèi)容、易于用戶操作而備受歡迎,本文將詳細(xì)介紹如何使用JavaScript結(jié)合CSS3動畫實現(xiàn)這一效果,并探討其在實際項目中的應(yīng)用,需要的朋友可以參考下
    2025-02-02
  • JavaScript讀取本地文件常用方法流程解析

    JavaScript讀取本地文件常用方法流程解析

    這篇文章主要介紹了JavaScript讀取本地文件常用方法流程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • JavaScript實現(xiàn)在標(biāo)題欄上顯示當(dāng)前日期的方法

    JavaScript實現(xiàn)在標(biāo)題欄上顯示當(dāng)前日期的方法

    這篇文章主要介紹了JavaScript實現(xiàn)在標(biāo)題欄上顯示當(dāng)前日期的方法,涉及javascript操作時間及DOM節(jié)點的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • JS實現(xiàn)的小火箭發(fā)射動畫效果示例

    JS實現(xiàn)的小火箭發(fā)射動畫效果示例

    這篇文章主要介紹了JS實現(xiàn)的小火箭發(fā)射動畫效果,涉及javascript基于時間函數(shù)的頁面元素屬性動態(tài)變換實現(xiàn)運動效果相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • js讀取本地excel文檔數(shù)據(jù)的代碼

    js讀取本地excel文檔數(shù)據(jù)的代碼

    下面的代碼在需要設(shè)置IE安全級別低才能正常運行,貼出來主要是可以學(xué)習(xí)這方面的技術(shù)的朋友參考下。
    2010-11-11
  • JavaScript數(shù)組對象實現(xiàn)增加一個返回隨機元素的方法

    JavaScript數(shù)組對象實現(xiàn)增加一個返回隨機元素的方法

    這篇文章主要介紹了JavaScript數(shù)組對象實現(xiàn)增加一個返回隨機元素的方法,涉及javascript針對數(shù)組及隨機數(shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2015-07-07
  • 讓瀏覽器非阻塞加載javascript的幾種方法小結(jié)

    讓瀏覽器非阻塞加載javascript的幾種方法小結(jié)

    通常大多數(shù)瀏覽器是并行下載資源的,但由于外部腳本的特殊性例如通過腳本改變文檔的DOM結(jié)構(gòu)、腳本之間的存在依賴關(guān)系、使用document.write 向頁面輸出HTML等。
    2011-04-04
  • JavaScript中Null與Undefined的區(qū)別解析

    JavaScript中Null與Undefined的區(qū)別解析

    這篇文章主要介紹了JavaScript中Null與Undefined的區(qū)別解析,本文給出了多個代碼實例講解它們之間的區(qū)別,需要的朋友可以參考下
    2015-06-06
  • JavaScript中對于SPA單頁面的理解

    JavaScript中對于SPA單頁面的理解

    這篇文章主要介紹了JavaScript中對于SPA單頁面的理解,單頁應(yīng)用SPA是一種網(wǎng)絡(luò)應(yīng)用程序或網(wǎng)站的模型,它通過動態(tài)重寫當(dāng)前頁面來與用戶交互
    2023-02-02

最新評論

都匀市| 房山区| 富源县| 中江县| 岳普湖县| 册亨县| 明水县| 璧山县| 万载县| 伊吾县| 武胜县| 安庆市| 贡山| 宁河县| 阜康市| 巫山县| 新密市| 浮山县| 灵山县| 双城市| 精河县| 长海县| 光山县| 临汾市| 兰考县| 加查县| 永安市| 麟游县| 丹阳市| 玛曲县| 容城县| 濮阳县| 桂平市| 彭山县| 青龙| 广昌县| 枣阳市| 文昌市| 长白| 五寨县| 恭城|