引言:
单例模式是软件开发中最常见的设计模式之一,顾名思义,整个系统中只有一个实例对象能被获取和使用。
它的要点有三:
- 一个类只能有一个实例——私有化构造函数
- 这个实例由这个类自行创建——类的静态变量保存这个唯一实例
- 必须自行向系统提供这个实例——1.直接暴露 2.静态方法get到它
(不管是饿汉式还是懒汉式都体现以上三点)
两种常见形式
- 饿汉式:不管如何都会直接创建实例对象(无线程安全问题)
- 懒汉式:延迟创建实例对象(会面临线程安全问题)
一、饿汉式(三种方式)
饿汉式有三种方法,分别是直接实例化,枚举类型,和静态代码块。饿汉式不涉及线程安全问题,它都是加载类的时候初始化对象。
第一版:直接实例化饿汉式
public class Singleton1 {
public static final Singleton1 INSTANCE = new Singleton1();
private Singleton1(){ //私有化构造器
}
}
Test:
public class Singleton1Test {
public static void main(String[] args) {
Singleton1 singleton1 = Singleton1.INSTANCE;
System.out.println(singleton1);
}
}