单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。需要多次初始化同一个对象的应用程序中,为了保证初始化对象只有一个以达到节约内存的目的
目的:实例化多次,得到同一个对象,让某个类只能被实例化一次。
实现步骤:
1、构造方法私有化
2、创建一个公共的静态方法,用来返回当前类的实例化对象,并且保证只实例化一次
3、创建一个用于存储对象的静态变量(这个变量的类型一定是当前类类型)
懒汉模式
第一次使用创建对象。线程不安全,延迟初始化,严格意义上不是不是单例模式
public class Singleton_01 {
// 1 私有化构造
private Singleton_01() {
}
// 保存当前对象的变量
private static Singleton_01 s = null;
// 用于获取对象的方法
public static Singleton_01 getInstance() {
// 如果为null 说明没有对象,就创建一个
// 如果不能为null 说明有对象,就直接返回
if (s == null) {
s = new Singleton_01();
}
return s;
}
}
饿汉模式
类加载阶段初始化。线程安全,比较常用,但容易产生垃圾。
public class Singleton_02 {
// 1 私有化构造
private Singleton_02() {
}
// 保存当前对象的变量
private static Singleton_02 s = new Singleton_02();
// 用于获取对象的方法
public static Singleton_02 getInstance() {
return s;
}
}