js 设计模式 第五章 单例模式
2012-10-18 09:02
381 查看
单例模式
why?
1 解决global variables 过多的问题。你懂的。__.dom,__.event,这里__就是个单例对象,所有的dom及event都放在__里面,不用再放在global域
how?
将用到的属性和方法都放在一个单例里面,这样,这些属性和方法将不会污染全局空间
what?
最简单的单例模式
这个例子中,所有的成员都是通过__来访问的。
单例生成了一个名字空间,所有你的属性和方法都放在里面,这样就有效减少了同别的js代码冲突。名字空间,有利于保护自己的属性和方法,避免其他的属性和方法覆盖了名字空间里面的属性。
传统类型的单例有两部分:1 拥有属性和方法的对象本身 2 用来访问这个对象的变量,这个变量往往是global域的,这样单例才能在页面的任何区域都能被访问。
利用闭包,可以产生拥有私有属性的单例
上面讲的单例,都是页面加载的时候都运行了。也就是不是按需加载的。
lazy Instantiation
把前面一个代码简单包装下,就出来了。
第一步:讲前面例子的代码放到Constructor函数中。
第二步:让匿名函数返回getInstance方法,在里面实现lazy instantiation
单例作为名字空间的作用,应该多使用。
why?
1 解决global variables 过多的问题。你懂的。__.dom,__.event,这里__就是个单例对象,所有的dom及event都放在__里面,不用再放在global域
how?
将用到的属性和方法都放在一个单例里面,这样,这些属性和方法将不会污染全局空间
what?
最简单的单例模式
var __ ={ version:'1.0', author:'xiongge', addEvent:function(){ } };
这个例子中,所有的成员都是通过__来访问的。
单例生成了一个名字空间,所有你的属性和方法都放在里面,这样就有效减少了同别的js代码冲突。名字空间,有利于保护自己的属性和方法,避免其他的属性和方法覆盖了名字空间里面的属性。
传统类型的单例有两部分:1 拥有属性和方法的对象本身 2 用来访问这个对象的变量,这个变量往往是global域的,这样单例才能在页面的任何区域都能被访问。
利用闭包,可以产生拥有私有属性的单例
var DataParser = (function(){ //private attributes var whitespaceRegex = /\s+/; //private methods function stripWhitespace(str){ return str.replace(whitespaceRegex,''); } return { //public method stringToArray : function(str){ str = stripWhitespace(str); return str.split(''); } } })();
上面讲的单例,都是页面加载的时候都运行了。也就是不是按需加载的。
lazy Instantiation
var DataParser = (function(){ var uniqueInstance; function Constructor(){ //private attributes var whitespaceRegex = /\s+/; //private methods function stripWhitespace(str){ return str.replace(whitespaceRegex,''); } return { //public method stringToArray : function(str){ str = stripWhitespace(str); return str.split(''); } } } return { getInstance: function(){ if(!uniqueInstance){ uniqueInstance = constructor(); } return uniqueInstance; } } })();
把前面一个代码简单包装下,就出来了。
第一步:讲前面例子的代码放到Constructor函数中。
第二步:让匿名函数返回getInstance方法,在里面实现lazy instantiation
单例作为名字空间的作用,应该多使用。
相关文章推荐
- 【js设计模式笔记---封装】
- 【js设计模式笔记---方法的链式调用】
- js 设计模式 oop 面向对象编程
- node.js笔记之订阅发布设计模式
- js创建型设计模式--简单工厂模式
- 【js设计模式笔记---方法的链式调用】
- js设计模式-桥接模式-单例包装器
- js设计模式之构造函数模式
- 深入理解Node.js中通用基础设计模式
- JS设计模式一:单例模式
- 走向.NET架构设计—第五章—业务层模式,原则,实践(前篇)
- js设计模式单例理解
- 设计模式第五章 依赖倒转原则 笔记
- js架构设计模式——前端MVVM框架设计及实现(二)
- JS设计模式理解干货
- [js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表
- 【js设计模式笔记---代理模式】
- 【JS 设计模式 】用组合模式来实现树形导航--JS代码结构思路分析(二)
- JS设计模式之命令模式概念与用法分析
- JS原型设计模式(一)