Java单例模式中的饿汉和懒汉模式怎么实现
吴韵如 2023-09-16编程经验
前言在Java编程中,单例模式是一种常见的设计模式,它确保一个类只能创建一个实例,并提供一个全局访问点来获取该实例。实现单例模式有多种方法,其中包括饿汉模式和懒汉模式。本文将详细介绍两种模
前言
在Java编程中,单例模式是一种常见的设计模式,它确保一个类只能创建一个实例,并提供一个全局访问点来获取该实例。实现单例模式有多种方法,其中包括饿汉模式和懒汉模式。本文将详细介绍两种模式的实现原理和具体步骤。饿汉模式
饿汉单例模式在类加载时就创建实例对象,并在静态变量中保存这个唯一的实例。简单来说,饿汉模式的特点是:类一旦加载就创建一个单例,保证在调用 getInstance() 方法之前单例已经存在。 实现饿汉模式的步骤如下: 1. 将类的构造函数设置为私有,这样外部就无法通过 new 关键字来实例化该类。 2. 在类的内部创建一个静态私有的实例对象,通过这个私有实例对象对外提供获取实例的方法。 3. 提供一个公有的静态方法,允许外部获取该类的唯一实例。 下面是饿汉模式的示例代码:public class Singleton { // 2. 在类的内部创建一个静态私有的实例对象 private static Singleton instance = new Singleton(); // 1. 将类的构造函数设置为私有 private Singleton() {} // 3. 提供一个公有的静态方法,允许外部获取实例 public static Singleton getInstance() { return instance; } }
懒汉模式
懒汉模式与饿汉模式不同,它在需要时才创建实例对象。懒汉模式的特点是:类加载时没有生成单例,只有当第一次调用 getInstance() 方法时,才会创建这个唯一的实例。 实现懒汉模式的步骤如下: 1. 将类的构造函数设置为私有,与饿汉模式相同,这样外部就无法通过 new 关键字来实例化该类。 2. 在类的内部创建一个静态私有的实例对象,并将其初始化为 null。 3. 提供一个公有的静态方法,在该方法中判断实例对象是否为 null,如果为 null,则进行实例化,并返回实例对象;如果不为 null,则直接返回实例对象。 下面是懒汉模式的示例代码:public class Singleton { // 2. 在类的内部创建一个静态私有的实例对象,并将其初始化为 null private static Singleton instance = null; // 1. 将类的构造函数设置为私有 private Singleton() {} // 3. 提供一个公有的静态方法,用于获取实例 public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); // 实例化对象 } return instance; } }
总结
饿汉模式和懒汉模式都是实现单例模式的常见方式。饿汉模式在类加载时就创建实例对象,适用于实例较小且占用资源较少的情况。懒汉模式在需要时才创建实例对象,适用于实例较大或实例化较耗时的情况。根据实际需求,可以选择合适的单例模式来保证程序的性能和资源的合理利用。 很赞哦! ()