【java】设计模式——单例模式

  1. 单例模式要点
    • 一个类只需要一个实例化对象;
    • 必须自行创建实例;
    • 必须自行向整个系统提供这个实例
  2. 实现
    • 只提供私有构造方法;
    • 有一个该类的静态私有对象;
    • 提供一个静态公有方法用于创建、获取静态私有对象;
    分析:
    • 私有构造方法->不能随意创建实例;
    • 静态私有对象:确保只有一个实例对象
    • 静态公有方法->提供一个外部接口,可直接通过类名调用该方法,方法内部能直接调用静态对象;
  3. 饿汉式实现方法:在创建类时实例化
// 在创建类时直接实例化,空间换时间
public class SingletonOne{
	//1. 私有构造
	private SingletonOne(){
	}
	
	//2. 在创建该类时初始化静态私有对象
	private static SingletonOne instance = new SingletonOne();

	// 3.提供静态公有方法返回静态实例对象
	public static SingletonOne getInstance(){
		return instance;
	}
}
  1. 懒汉式实现方法:静态公有方法中实例化
// 在调用静态公有方法后,才完成对象的实例化
public class SingletonTwo{
	//1. 私有构造
	private SingletonOne(){
	}
	
	//2. 在创建该类时初始化静态私有对象
	private static SingletonTwo instance = null;

	// 3.提供静态公有方法返回静态实例对象
	public static SingletonOne getInstance(){
		if(instance==null) // 保证只会实例化一次
			instance = new SingletonTwo();
		return instance;
	}
}
  1. 饿汉式 vs 懒汉式
单例模式的实现方法 实例化对象的时间 空间特点 时间特点 线程安全
饿汉式 在类加载时候完成 空间占用时间长 在第一次使用时加载速度快 线程安全
懒汉式 在第一次调用共有方法时完成 不会造成内存空间浪费 在第一次使用时加载时间相对慢 线程不安全

你可能感兴趣的:(java,设计模式,单例模式)