您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Singleton封装增删改查

2024/11/10 8:38:57发布24次查看
这次给大家带来singleton封装增删改查,singleton封装增删改查的注意事项有哪些,下面就是实战案例,一起来看一下。
本文实例讲述了js基于设计模式中的单例模式(singleton)实现封装对数据增删改查功能。分享给大家供大家参考,具体如下:
单例模式
单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例
单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
var singleton = (function(){  singletonclass() {  }  var singleton = null;  return {   getinstance: function() {    if (singleton == null) {   singleton = new singletonclass();    } else {   return singleton;    }   }  } })(); singleton.getintance();
前端经常用到一些和接口相关的增删改查异步操作。我们来举例,我在操作数据列表时,常常少不了,增加 修改 删除功能。有的方案是用同步的(刷新页面),用户体验好一些用异步;
代码如下
增加功能
$(.add).click(function(){   $.ajax({   type: post     datatype:json,     url: http://www.jb51.net/,     data: {name:csdn博客,dir:web前端},     success: function( result ){     if ( result.status ) { alert(新增成功!) } else { alert(新增失败) }   },     error: function(){     alert(新增出现异步,请得新增加或联系技术管理员);   }   }); });
删除功能
$(.del).click(function(){   $.ajax({   type: post     datatype:json,     url: http://www.jb51.net/,     data: {id:1},     success: function( result ){     if ( result.status ) { alert(删除成功!) } else { alert(删除失败) }   },     error: function(){     alert(新增出现异步,请得新增加或联系技术管理员);   }   }); });
上面这二个代码片段简单描述了,增加和删除功能的js代码。有的同学发现了,他们有共同点,就是ajax请求中有一部分是相同的,并且删除功能如果在其它地方也用到呢?,那在其它地方也要写一代码这种相同的代码。感觉很不舒服
我们改进一下
var singletoncrud = (function(){  singletonclass() {}  singletonclass.prototype = {    constructor: singletonclass,    add: function( data ) {   $.ajax({    type: post      datatype:json,      url: http://www.jb51.net/,      data: data,      success: function( result ){     if ( result.status ) { alert(新增成功!) } else { alert(新增失败) }    },      error: function(){     alert(新增出现异步,请得新增加或联系技术管理员);    }     });    },   remove: function( data ) {   $.ajax({    type: post      datatype:json,      url: http://www.jb51.net/,      data: data,      success: function( result ){     if ( result.status ) { alert(删除成功!) } else { alert(删除失败) }    },      error: function(){     alert(新增出现异步,请得新增加或联系技术管理员);    }     });    }  }  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 ); });
经常用singleton实例来做一些tool工具类;
使用设计模式优点:解耦合、可读性强、代码结构清晰;
通过上面的小例子,把点击事件里的获取数据(click的事件函数)和操作数据(ajax请求)相分离;
通过对单例模式的优化后的代码:
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(新增出现异步,请得新增加或联系技术管理员);    }     });    },    add: function( data ) {   this.ajax(http://www.jb51.net/, data, function( result ){     if ( result.status ) { alert(新增成功!) } else { alert(新增失败) }   });    },   remove: function( data ) {   this.ajax(http://www.jb51.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方法,也相当于一个门面模式(facade),隐藏内部细节,对外暴露一个接口;
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
js的作用域与预解析使用详解
动态显示select下拉列表数据
以上就是singleton封装增删改查的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product