无论任何一门语言,模式的思想都一样,不一样的就是语言的细节。
Java版:
public class Singleton {
private volatile static Singleton instance;
private Singleton(){};
public static Singleton getInstance()
{
if(instance == null){
synchronized (Singleton.class) {
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
C#版:
public class Singleton
{
protected Singleton() { }
private static volatile Singleton instance = null;
/// Lazy方式创建唯一实例的过程
public static Singleton Instance()
{
if (instance == null) // 外层if
lock (typeof(Singleton)) // 多线程中共享资源同步
if (instance == null) // 内层if
instance = new Singleton();
return instance;
}
}
JS版:
var singletonTest=(function(){
function single(args){
var args=args || [];
this.name='singletontest';
this.x=args.x || 6;
this.y=args.y || 7;
};
var instance;
var _static={
name:'singletontest',
getInstance:function(args){
if( instance === undefined)
{
instance = new single(args);
}
return instance;
}
};
return -static;
})();
//调用 var singletonTest = SingletonTester.getInstance({ pointX: 5 });