首页 > 代码库 > JS单例设计模式

JS单例设计模式

   单例,指的是只有一个实例的对象。

   在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为。比如在整个系统的配置文件中,配置数据有一个单例对象进行统一读取和修改,其他对象需要配置数据的时候也统一通过该单例对象来获取配置数据,这样就可以简化复杂环境下的配置管理。

   实现一:对象字面量

1 var singleton = {
2         name : value,
3         method : function(){
4                      //这里是方法内容
5         }
6  };

 

   实现二:构造函数内部判断

 1 function Construct(){
 2     // 确保只有单例
 3     if( Construct.unique !== undefined ){
 4         return Construct.unique; 
 5     }
 6     // 其他代码
 7     this.name = "NYF";
 8     this.age="24";
 9     Construct.unique = this;
10 }

  实现三:模块模式

 1 var singleton = function(){
 2       //私有变量与私有函数
 3      var privateVariable = 10;
 4 
 5      function privateFunction(){
 6         //.......
 7      }
 8 
 9      return{
10          publicProperty : true,
11 
12          publicMethod : function(){
13                privateVariable++;
14                return privateFunction();
15          }
16      };
17 }(); 

   实现四:增强的模块模式(单例必须是某种类型)

 1 var singleton = function(){
 2       var privateVariable = 10;
 3 
 4       function privateFunction(){
 5           return false;
 6       }
 7 
 8       var object = new SomeType();
 9 
10       object.publicProperty = true;
11 
12       object.publicMethod = function(){
13            privateVariable++;
14            return privateFunction();
15       };
16 
17       return object;
18 }();