单例模式的两种实现方式及区别
?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;
?}
}
?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jun_yuner/archive/2007/12/10/1927621.aspx
?