标签:
单例模式非常简单,基本没有什么类之间的关系,就不画图了,保证某个类生成的实例只有一个即可。
/*
*“懒汉式”写法,即等要用了再去实例化实例对象,而不是应用一启动就实例化好放在容器中。
*/
public class Singleton {
private Singleton();
private static Singleton instance;
public static getSingleton(){
if(instance==null){
instance = new Sinleton();
}
return instance;
}
}
//双重检查锁的写法,因为使用了volatile关键字,需要jdk1.4以上
public class Singleton {
private Singleton();
private static volatile Singleton instance;
public static getSingleton(){
if(instance==null){
synchronized (Singleton.class){
if(instance==null){
instance = new Sinleton();
}
}
}
return instance;
}
}
/**
* “饿汉式”的写法,因为没用到同步锁,所以后期效率最高。
**/
public class Singleton {
private Singleton();
private static Singleton instance = new Singleton();
public static getSingleton(){
return instance;
}
}
??其实所谓“懒汉式”与“饿汉式”的写法,只是区别在初始化的时机而已。“饿汉式”写法由jvm保证一应用启动时只实例化一个对象,由于多了一步实例化操作,应用启动会稍微慢点。而“懒汉式”由于是在应用启动后实例对象,所以要考虑多线程并发的情况。对于不是很大的应用,个人偏向于“饿汉式”,毕竟启动的时候多花点时间启动,换来后期运行的安全与效率也是值得的。谁没事天天重启生产上的程序啊(╯‵□′)╯︵┻━┻ 。
Head First Design Pattern 读书笔记(4) 单例模式
标签:
原文地址:http://my.oschina.net/u/1010578/blog/379340