这篇文章主要介绍了javascript设计模式之单件模式介绍,单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象,需要的朋友可以参考下。
单件模式说明
1、说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象;面向对象语言如java, .net c#这样的服务端动态语言里,能保证类的操作有顺的进行,避免并行操作使数据发生混乱的情况;
2、单件模式的好处:
1)、 减少 new 的操作,以免加快内存频繁操作,占用内存;
2)、尽量减少大系统的对象的开销;
3)、就是上面说的,可以保障某些类型的操作有顺序准确的操作,以免并行处理引起的数据异常现象;
当然上面说的好处,都是说服务端语言里的。在javascript这种弱类型的语言,不要纠结那么多,因为脚本都在自己的客户端这边操作的,没有什么操作冲突的问题;相当于整个服务器就你一个人在用,不用担心,你的数据会被其他什么人操作的问题;
实例源码
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; }}
使用方法:
var mail = singleton.getinstance();mail.to = 'toname#mail.com';mail.title = '单件模式发送';mail.content = '发送内容';mail.send();
当像有些全局框架,比如像 dwz 这样的富ui框架,创建一个 全局 的singleton 后,singleton.instance 都有值了,就不必要再创建;
当然如果是写成这样的,会比较明了,跟服务端语言一置:
singleton.getinstance().to = 'toname#mail.com';singleton.getinstance().title = '单件模式发送';singleton.getinstance().content = '发送内容';singleton.getinstance().send();
其他实说明
单件模式在什么的地方,比较有用呢?比如有一个操作服务器上一个统一的配置文件时,比如像大规模并发操作还需要注意先来后到的情况时,比如交易所的操作过程记录等,都可以用 单件模式 来操作;
另外:单件模式的方式:
1. 上头那种叫懒惰方式
2. 饿棍方式:
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. 代码:
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; } }})();
2. 使用方法:
//一样用法var mail = singleton.getinstance();mail.to = 'toname#mail.com';mail.title = '闭包式 单件模式发送';mail.content = '发送内容';mail.send();
以上就是本章的全部内容,更多相关教程请访问javascript视频教程!