单例模式两种构造方法
2016-11-10 本文已影响16人
shanyukang
1:类加载时进行对象的实例化:
public class SingletonA {
//SingletonA的唯一实例
private static SingletonA instance = new SingletonA();
//将构造函数私有,防止外界构造SingletonA实例
private SingletonA() {
}
/**
* 获取SingletonA的实例
*/
public static SingletonA getInstance() {
return instance;
}
}
2:第一次访问时进行对象的实例化
public class SingletonB {
//SingletonB的唯一实例
private static SingletonB instance = null;
//将构造函数私有,防止外界构造SingletonB实例
private SingletonB() {
}
//获取SingletonB的唯一实例,用synchronized关键字保证某一时刻只有一个线程调用此方法。
public static synchronized SingletonB getInstance() {
//如果instance为空,便创建一个新的SingletonB实例,否则,返回已有的实例
if (instance == null) {
instance = new SingletonB();
}
return instance;
}
}