为什么要实现单例模式?
首先单例模式是一种软件的设计模式。在实际的开发过程中,如果系统中某个对象希望只存在一个即可,不断的实例化对象是对内存资源的一种浪费,由此产生了单例模式的设计理念。单例模式保证系统中一个类只有一个实例切实例可以被外界访问到,来实现对实例化对象个数的限制,控制资源。
懒汉模式
懒汉加载法,懒加载的好处: 有的对象构建开销是比较大的,所以需要在真正使用的时候再加载,若没有被调用过就造成了空间浪费。但是该方法线程不安全,可能会实例化多次。此处给了多个版本可以实现线程安全的饿汉模式。
实现1
//最简单的实现方式 ,但是线程不安全
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
}
}
实现2
//采用双重校验锁 保证线程安全
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null)
synchronized (Singleton.class) {
if (instance == null)
instance = new Singleton();
}
return instance;
}
}
饿汉模式
实现1
//在初始化的时候就已经实例化对象
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}