您的位置:首页 > 其它

一天一个设计模式--单例模式

2016-03-21 21:02 288 查看
一、单例模式

1.单例,顾名思义,某个类只能有一个实例。

2.它必须自行创建这个唯一的实例。

3.它必须自行向整个系统提供这个实例。

二、单例模式的三种实现

1.饿汉式单例类(类加载时就初始化)

public class EagerSingleton {
//私有的类成员常量
private static final EagerSingleton SINGLETON=new EagerSingleton();
//私有的默认构造方法,此类不能被继承
private EagerSingleton(){}
//静态工厂方法
public static EagerSingleton getInstance(){
return SINGLETON;
}
}
Java语言中的单例类的一个最重要的特点是类的构造方法是私有的,从而避免外界利用构造方法直接创建出人意多飞实例。

2.懒汉式单例类(第一次调用才初始化,延迟)

public class DoubleCheckSingleton {
private volatile static DoubleCheckSingleton singleton = null;

// 私有的默认构造方法,此类不能被继承
private DoubleCheckSingleton() {
}

// 静态工厂方法,返回此类的唯一实例
public static DoubleCheckSingleton getInstance() {
if (singleton == null) {
synchronized (DoubleCheckSingleton.class) {
if (singleton == null) {
singleton = new DoubleCheckSingleton();
}
}
}
return singleton;
}
}


对2的懒汉式的另外一种改进

public class DoubleCheckSingleton {
private volatile static DoubleCheckSingleton singleton = null;

// 私有的默认构造方法,此类不能被继承
private DoubleCheckSingleton() {
}

// 静态工厂方法,返回此类的唯一实例
public static DoubleCheckSingleton getInstance() {
if (singleton == null) {
synchronized (DoubleCheckSingleton.class) {
if (singleton == null) {
singleton = new DoubleCheckSingleton();
}
}
}
return singleton;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: