源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript设计模式之单件模式介绍

  • 时间:2022-01-17 08:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript设计模式之单件模式介绍
[b]单件模式说明[/b] 1. 说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象;面向对象语言如Java, .Net C#这样的服务端动态语言里,能保证类的操作有顺的进行,避免并行操作使数据发生混乱的情况; 2. 单件模式的好处: 1>. 减少 new 的操作,以免加快内存频繁操作,占用内存; 2>. 尽量减少大系统的对象的开销; 3>. 就是上面说的,可以保障某些类型的操作有顺序准确的操作,以免并行处理引起的数据异常现象; 当然上面说的好处,都是说服务端语言里的。在javascript这种弱类型的语言,不要纠结那么多,因为脚本都在自己的客户端这边操作的,没有什么操作冲突的问题;相当于整个服务器就你一个人在用,不用担心,你的数据会被其他什么人操作的问题; [b]实例源码[/b]
[u]复制代码[/u] 代码如下:
var Singleton = {     instance: null,     MailSender: function() {         var self = this;         self.to = '';         self.title = '';         self.content = '';         self.send = function() {              //send body         }     },     getInstance : function() {         if (this.instance == null) {             this.instance = new Singleton.MailSender();         }         return this.instance;     } }
[b]使用方法:[/b]
[u]复制代码[/u] 代码如下:
var mail = Singleton.getInstance(); mail.to = 'toname#mail.com'; mail.title = '单件模式发送'; mail.content = '发送内容'; mail.send();
当像有些全局框架,比如像 DWZ 这样的富UI框架,创建一个 全局 的Singleton 后,Singleton.instance 都有值了,就不必要再创建; 当然如果是写成这样的,会比较明了,跟服务端语言一置:
[u]复制代码[/u] 代码如下:
Singleton.getInstance().to = 'toname#mail.com'; Singleton.getInstance().title = '单件模式发送'; Singleton.getInstance().content = '发送内容'; Singleton.getInstance().send();
[b]其他实说明[/b] 单件模式在什么的地方,比较有用呢?比如有一个操作服务器上一个统一的配置文件时,比如像大规模并发操作还需要注意先来后到的情况时,比如交易所的操作过程记录等,都可以用 单件模式 来操作; 另外:单件模式的方式: 1. 上头那种叫懒惰方式 2. 饿棍方式:
[u]复制代码[/u] 代码如下:
var Singleton = {     instance : new Singleton.MailSender(),     MailSender : function() {       var self = this;       self.to = '';       self.title = '';       self.content = '';       self.send = function() {           //send body       }    },    getInstance : function() {         return this.instance;    } }
使用方法一样; 使用闭包方式创建单件模式,隐藏 instance 对象 1. 代码:
[u]复制代码[/u] 代码如下:
var Singleton = (function() {     var instance = null;     function MailSender() {        this.to = '';        this.title = '';        this.content = '';     }     MailSender.prototype.send = function() {        //send body     }     return {        getInstance : function() {           if (instance == null) {              instance = new MailSender();           }           return instance;        }     } })();
[b]2. 使用方法:[/b]
[u]复制代码[/u] 代码如下:
//一样用法 var mail = Singleton.getInstance(); mail.to = 'toname#mail.com'; mail.title = '闭包式 单件模式发送'; mail.content = '发送内容'; mail.send();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部