论坛首页 Java企业应用论坛

对单例模式的改进

浏览 10753 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (8)
作者 正文
   发表时间:2010-06-23   最后修改:2010-06-29
给出一种对单例模式改进

package boke.mode;

package boke.mode;

/**
 * 单例模式改进
 * 
 * @since jdk1.6
 * @author 毛正吉
 * @version 1.0
 * @date 2010.06.08
 * 
 */
public class Singleton {
	
	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		Singleton s3 = Singleton.getInstance();
		Singleton s4 = Singleton.getInstance();
		Singleton s5 = Singleton.getInstance();

		System.out.println(s1 == s2);
		System.out.println(s2 == s3);
		System.out.println(s3 == s4);
		System.out.println(s4 == s5);
	}

	/**
	 * 私有内部类
	 * @author 毛正吉
	 *
	 */
	private static class SingletonCreate {
		private static final Singleton instance = new Singleton();
	}
	
	/**
	 * 私有构造
	 */
	private Singleton() {
		System.out.println("Singleton Constructor...");
	}

	public static final Singleton getInstance() {

		return SingletonCreate.instance;

	}
}
   发表时间:2010-06-23  
请参考此条目:
http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
0 请登录后投票
   发表时间:2010-06-23  
   
0 请登录后投票
   发表时间:2010-06-23  
用Object Holder来实现Thread之间的visiblity.
0 请登录后投票
   发表时间:2010-06-23  
keshin 写道
请参考此条目:
http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom



这篇文章将原理阐述地非常清楚~
0 请登录后投票
   发表时间:2010-06-23  
这是延迟加载的单例模式
0 请登录后投票
   发表时间:2010-06-23  

public enum Singleton{

    INSTANCE


}

0 请登录后投票
   发表时间:2010-06-24  
magnesium 写道

public enum Singleton{

    INSTANCE


}



Effective Java
0 请登录后投票
   发表时间:2010-06-24  
包了一层有什么好处吗?我感觉没什么区别吧!
0 请登录后投票
   发表时间:2010-06-24  
slaser 写道
用Object Holder来实现Thread之间的visiblity.


是不是既能 做到 延迟加载, 又不需要在每次getInstance的时候加互斥锁 等待


关于类加载的过程,
哪位大侠详细讲解下啊

0 请登录后投票
论坛首页 Java企业应用版

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