前言
单例模式(Singleton pattern):确保一个类只有一个实例,并提供该实例的全局访问点
本文主要分析单例模式常见的几种实现方式
一. 类图
单例模式使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。
私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。
二. 实现方式
2.1 饿汉式
饿汉式在类加载的时候就进行实例化,这样做的好处是线程安全;但缺点也是有的,首先在加载的时候就进行实例化,万一这个类占用的资源很大,就会非常浪费资源,毕竟它不一定在什么时候被使用,但内存是一开始就被占用了。
public class HungryManSingleton {
private static HungryManSingleton hungryManSingleton = new HungryManSingleton();
private HungryManSingleton() { }
public static HungryManSingleton getInstance() {
return hungryManSingleton;
}
}
复制代码
在main方法中验证饿汉式实现的单例模式:
HungryManSingleton instance1 = HungryManSingleton.getInstance();
HungryManSingleton instance2 = HungryManSingleton.getInstance();
System.out.println("从饿汉单例获取的两个实例比较:" + instance1.equals(instance2));
复制代码
输出: