论坛首页 入门技术论坛

JAVA设计模式之单例模式

浏览 7537 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-03-01  
zhengming214 写道
public class SingLeton { 
    private SingLeton(){ 
         
    } 
    private static final SingLeton instance = new SingLeton(); 
     
    public static SingLeton getInstance(){ 
       
        return instance; 
    }



其实这样就可以实现单列模式的目的了


这种方式没有实现延迟加载,可能会浪费内存资源。推荐使用枚举的方式。还有一种解决了延迟加载的方式如下:
public class Singleton {  
    private Singleton(){  
          
    }  
    private static class SingletonHolder {
         private static final Singleton instance = new Singleton();
    }
      
    public static Singleton getInstance(){         
        return SingletonHolder.instance;  
    }
}
0 请登录后投票
   发表时间:2011-04-06  
有人总结过的:

public class Singleton { 
    private volatile Singleton instance = null; 
    public Singleton getInstance() { 
        if (instance == null) { 
            synchronized(this) { 
                if (instance == null) { 
                    instance = new Singleton(); 
                } 
            } 
        } 
        return instance; 
    } 
0 请登录后投票
   发表时间:2011-06-15   最后修改:2011-06-15

 

public class Singleton {

	private static Singleton instance = null;
	
	private Singleton(){}
	
	public static synchronized Singleton getInstance(){
		
		if (null == instance){
			instance = new Singleton();
		}
		return instance;
	}
}
 

或者,如果您的目的是消除同步,可以使用以下的方法 :

 

 

public class Singleton {

	private static Singleton instance = new Singleton(); 
	
	private Singleton(){}
	
	public static Singleton getInstance(){
		return instance;
	}
}

 

具体可参考:

《双重检查锁定及单例模式》:http://www.ibm.com/developerworks/cn/java/j-dcl.html

 

0 请登录后投票
   发表时间:2011-06-16  
放在spring里面,是不是就不用那么多static private的修饰符了?
0 请登录后投票
   发表时间:2011-06-17  
package com.yin.test;

public class SingletonDemo {

private static SingletonDemo single = null;

private SingletonDemo() {

}

public static SingletonDemo newInstance() {
if (single == null) {
single = new SingletonDemo();
return single;
} else {
return single;
}
}

}
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics