单例模式算是Java设计模式中最简单的一种了,有好几种写法,这里主要介绍2种,分别是懒汉式和饿汉式。
饿汉式:
public class Single {
//1.私有的静态成员变量
private static Single instance = new Single();
//2.私有的构造方法
private Single() {
}
//3.对外提供公共静态的方法,获得对象
public static Single getInstance() {
return instance;
}
}
懒汉式:
懒汉式之线程不安全的,效率高的
public class Single {
//1.私有的静态成员变量
private static Single instance = null;
//2.私有的构造方法
private Single() {
}
//3.对外提供公共的方法,获得对象
public static Single getInstance() {
if (instance == null){
instance = new Single();
}
return instance;
}
}
懒汉式之线程安全的
//在方法上加同步锁:
public class Single {
//1.私有的静态成员变量
private static Single instance = null;
//2.私有的构造方法
private Single() {
}
//3.对外提供公共的方法,获得对象
public synchronized static Single getInstance() {
if (instance == null){
instance = new Single();
}
return instance;
}
}
// 双重保障:
public class Single {
//1.私有的静态成员变量
private static Single instance = null;
//2.私有的构造方法
private Single() {
}
//3.对外提供公共的方法,获得对象
public static Single getInstance() {
if (instance == null) {
synchronized (Single.class) {
if (instance == null) {
instance = new Single();
}
}
}
return instance;
}
}