1. 单例模式:使得类的一个对象成为该类系统中的唯一实例;一个类有且只有一个实例,并且自行实例化向整个系统提供
2. 要点:某个类只能有一个实例;必须自行创建实例;必须自行向整个系统提供这个实例
3. 实现:只提供私有的构造方法;含有一个该类的静态私有对象;提供一个静态的公有方法用于创建、获取静态私有对象
4. 代码实现方案:饿汉式,对象创建过程中创建;懒汉式,静态公有方法中实例化
5. 饿汉式代码举例
// 饿汉式:类加载的时候直接初始化 空间换时间
public class Singleton {
// 1. 创建类中私有构造
private Singleton() {}
// 2. 创建该类型的私有静态实例
private static Singleton instance = new Singleton();
// 3. 创建公有静态方法返回静态实例对象
public static Singleton getInstance() {
return instance;
}
}
6. 懒汉式代码举例
// 懒汉式:类加载的时候并不直接初始化,直到第一次调用getInstance方法时完成初始化
public class Singleton {
// 1. 创建类中私有构造
private Singleton() {}
// 2. 创建该类型的私有静态实例
private static Singleton instance = null;
// 3. 创建公有静态方法返回静态实例对象
public static Singleton getInstance() {
if(instance == null) instance = new Singleton();
return instance;
}
}
7. 饿汉式是线程安全的;懒汉式可以通过同步锁、双重校验锁、静态内部类、枚举等方式解决存在的线程风险