单例模式两种构造方法

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;

}

}

上一篇 下一篇

猜你喜欢

热点阅读