js设计模式——单例/单体模式
2012-02-19 17:15
120 查看
JavaScript中的单例模式是最常用的、最基本的设计模式,它提供了一种命名空间,减少全局变量泛滥的代码管理机制;
1、最常见的单例模式:
这是JavaScript开发中最常用的代码组织方式,这种方式在JavaScript执行的时候,就已经创建了实例对象。这样创建的实例对象,所有的属性、方法都是公开的,有一定的风险;一般使用这样的单例模式,我们可以采用下划线_来命名私有变量,来约定为私有变量。但是很不靠谱!
2、闭包方法的单例模式:
以上这种方法,实现了单例的私有变量对用户透明,用户所能知道的只有公开的接口,不能随意改变私有变量,但是这种方法还是在执行脚步的时候就产生了一个单例,用户有可能根本就不使用这段代码,这样就会造成内存浪费,更好的做法是将类的实例化推迟到需要的时候再实例化;
3、lazy方式的单例模式:
那么这种方法就可以在确实需要这段代码的时候,才实例化,实现懒惰性的单例模式!
1、最常见的单例模式:
//一般用function定义的类,我才会采用首字母大写的方法来约定这个变量为类 //而对于这种伪类,我通常习惯于使用驼峰式命名法 var singleton = { attr1: '', attr2: '', method1: function() {}, method2: function() {} };
这是JavaScript开发中最常用的代码组织方式,这种方式在JavaScript执行的时候,就已经创建了实例对象。这样创建的实例对象,所有的属性、方法都是公开的,有一定的风险;一般使用这样的单例模式,我们可以采用下划线_来命名私有变量,来约定为私有变量。但是很不靠谱!
2、闭包方法的单例模式:
var singleton = (function() { var _a, _b; //私有变量 var that = {}; //new某个类 //公开接口 that.getA = function() { return _a; }; that.setA = function(a) { _a = a; }; that.getB = function() { return _b; }; that.setB = function(b) { _b = b; }; return that; //返回单例 })();
以上这种方法,实现了单例的私有变量对用户透明,用户所能知道的只有公开的接口,不能随意改变私有变量,但是这种方法还是在执行脚步的时候就产生了一个单例,用户有可能根本就不使用这段代码,这样就会造成内存浪费,更好的做法是将类的实例化推迟到需要的时候再实例化;
3、lazy方式的单例模式:
var singleton = (function() { var _a, _b; //私有变量 var Class = function() { //code }; var that = {}; //公开接口 that.getA = function() { return _a; }; that.setA = function(a) { _a = a; }; that.getB = function() { return _b; }; that.setB = function(b) { _b = b; }; var _instance = null; var getInstance = function() { if(!_instance) { _instance = new Class(); } return _instance; }; Class.prototype = that; return { getInstance: getInstance }; })();
那么这种方法就可以在确实需要这段代码的时候,才实例化,实现懒惰性的单例模式!
相关文章推荐
- JS设计模式——5.单体模式(用了这么久,竟全然不知!)
- javascript 设计模式之单体模式 面向对象学习基础
- JavaScript设计模式 --- 单体模式
- javascript设计模式_第二部分_单体模式
- JavaScript设计模式:单体模式
- JS设计模式二:工厂模式
- javascript通过单体模式、闭包封装一次嗅探浏览器api
- js的命名空间 && 单体模式 && 变量深拷贝和浅拷贝 && 页面弹窗设计
- javascript 设计模式之单体模式-闭包
- 详细介绍javascript中的单体模式singleton(全面)
- [设计模式笔记]一. 创建型模式--6.Singleton模式(单体模式)(一)
- 单体类之饿汉模式
- 单例/单体模式(Singleton)
- 单例/单体模式(Singleton)
- 单体模式+模板类+智能指针实现CSingleton
- 设计模式------单体模式
- javascript 单例/单体模式(Singleton)
- js的命名空间 && 单体模式 && 变量深拷贝和浅拷贝 && 页面弹窗设计
- 设计模式学习笔记(1)单体模式Singleton
- js设计模式(1)---单例模式