单例模式的定义:保证一个类只有一个实例,并且提供一个访问它的全局访问点
实现单例模式:将单例模式类的实例保存,每次创建新实例的时候检查之前有没有实例被保存,有的话就返回原先的实例
使用代理实现单例模式:将单例模式实际要做的“事情”和“判断是否单例”分离编码(实际上这里和下面的getSingle的目的相同,这里是基于“类”的实现)
1 var ProxySingletonCreateDiv = (function(){ 2 3 var instance; 4 return function( html ){ 5 if ( !instance ) { 6 instance = new CreateDiv(html); 7 return instance; 8 } 9 return instance; 10 } 11 12 })();
如何更好的使用全局变量:
- 使用命名空间
- 使用闭包封装私有变量
通用的惰性单例:将“创建实例对象”和“管理单例”的职责分别放置在两个方法里面,其中重点是管理单例的方法-getSingle()。
1 var getSingle = function( fn ){ 2 var result; 3 // 这里形成闭包 4 return function(){ 5 // 括号里面的内容做了两件事:创建实例以及将实例储存进闭包 6 return result || ( result = fn.apply(this,arguments) ); 7 } 8 };
时间: 2024-11-17 23:55:13