标签:
单体模式作为一种软件开发模式在众多面向对象语言中得到了广泛的使用,在javascript中,单体模式也是使用非常广泛的,但是由于javascript语言拥有其独特的面向对象方式,导致其和一些传统面向对象语言虽然在单体模式的思想上是一致的,但是实现起来还是有差异的。
1 var Singleton={ 2 attribute1:true, 3 attribute2:10, 4 method1:function(){ 5 }, 6 method2:function(arg){ 7 } 8 }
1 var mySpace={}; 2 mySpace.Singleton={ 3 attribute1:true, 4 attribute2:10, 5 method1:function(){ 6 7 }, 8 method2:function(arg){ 9 10 } 11 }
1 mySpace.Singleton=(function(){ 2 var privateAttribute1=false; 3 var privateAttribute1=[1,2,3]; 4 function privateMethod1(){ 5 6 } 7 function privateMethod2(){ 8 9 } 10 11 return { 12 publicAttribute1:true, 13 publicAttribute2:10, 14 publicMethod1:function(){ 15 privateAttribute1=true; 16 privateMethod1(); 17 }, 18 publicMethod2:function(arg){ 19 privateAttribute1=[4,5,6]; 20 privateMethod2(); 21 } 22 23 } 24 25 })();
1 mySpace.Singleton=(function(){ 2 var uniqueInstance; //匿名函数创建私有变量,判断单体对象是否被创建的句柄 3 function constructor(){ 4 var privateAttribute1=false; 5 var privateAttribute1=[1,2,3]; 6 function privateMethod1(){ 7 } 8 function privateMethod2(){ 9 } 10 return { 11 publicAttribute1:true, 12 publicAttribute2:10, 13 publicMethod1:function(){ 14 privateAttribute1=true; 15 privateMethod1(); 16 }, 17 publicMethod2:function(arg){ 18 privateAttribute1=[4,5,6]; 19 privateMethod2(); 20 } 21 22 } 23 } 24 return { 25 getInstance:function(){ 26 if(!uniqueInstance){ 27 uniqueInstance=constructor(); 28 } 29 return uniqueInstance; 30 } 31 } 32 })();
标签:
原文地址:http://www.cnblogs.com/bloghxr/p/4459829.html