所谓单例模式就是只能有一个实例。如何只有一个实例呢?就是不能创建更多的实例,所以构造函数一般私有化,不能new一个新的对象,提供一个访问方法,只能通过这个访问点获取到唯一的对象实例。
常见实现方式有两种:懒汉模式和饿汉模式。
懒汉模式:就是很懒咯,不是一开始就装载好,而是你要用的时候我再创建。
eg:
/**
* 单例模式:懒汉模式
*
* @author yannic
*
*/
public class SingleInstance {
//volatile修饰,禁止指令重拍
private static volatile SingleInstance singleInstance;
// 私有化构造器,防止外部的类调用创建新对象
private SingleInstance() {
}
public static SingleInstance getInstance() {
//double-check:双重检查
if (singleInstance == null) {
synchronized (SingleInstance.class) {
if (singleInstance == null) {
singleInstance = new SingleInstance();
}
}
}
return singleInstance;
}
}
饿汉模式:就是很急迫嘛,一开始类装载的时候就创建好这个唯一的实例对象了。
/**
* 单例模式:饿汉模式
*
* @author yannic
*
*/
public class Singleton {
//类加载时就初始化
private static final Singleton singleton = new Singleton();
//私有化构造器
private Singleton() {
}
public static Singleton getInstance() {
return singleton;
}
}
还有一些其他实现方法啦,一个就是枚举方法,我不太会用,就不写啦。
来源:https://www.cnblogs.com/ITyannic/p/10705225.html