码迷,mamicode.com
首页 > 其他好文 > 详细

单态模式

时间:2014-09-18 14:40:53      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   io   os   使用   ar   div   sp   

一般Singleton模式通常有几种形式:
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问  
public static Singleton getInstance() {
return instance;   
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
//使用时生成实例!
if (instance==null)
instance=new Singleton();
return instance;   }
}
使用Singleton.getInstance()可以访问单态类。
上面第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。关于lazy initialization的Singleton有很多涉及double-checked locking (DCL)的讨论,有兴趣者进一步研究。
一般认为第一种形式要更加安全些。
 
来源:http://baike.baidu.com/view/1035727.htm?fr=aladdin

单态模式

标签:style   http   color   io   os   使用   ar   div   sp   

原文地址:http://www.cnblogs.com/liuswi/p/3979073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!