设计模式之--单例模式

mac2025-09-05  8

设计模式之–单例模式

单例模式的概念

单例模式 设计模式中最常用以及最常被面试问道的一种。作为开发人员,手写单例模式是最基本的能力

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

为什麽不需要实例化 ?

因为有实例化的无参构造设为私有,其实也是实现单例的一种手段,确保对象不会再别的地方被new 出来

首先来了解下今天要讲解的两种实现(还有多种实现) 懒汉式 饿汉式

懒汉式

package sun.framework.genesis.beta.designmode.one; /** * @Auther: SunDC * @Date: 2019/11/1 15:25 * @Description: 单例模式 (懒汉式)最常见的两种之一 * 需要注意的是 这是线程不安全的 */ public class IdlerOneClass { //volatile 是一个类型修饰符。volatile 的作用是作为指令关键字, //确保本条指令不会因编译器的优化而省略。 //详细解释 (先了解类的加载过程) -- https://www.jianshu.com/p/35e4504d42e4 private volatile static IdlerOneClass idlerOneClass = null; // 私有化构造方法 private IdlerOneClass() { } public static IdlerOneClass getInstance() { if (idlerOneClass == null) { synchronized (IdlerOneClass.class) { if (idlerOneClass == null) { idlerOneClass = new IdlerOneClass(); } } } return idlerOneClass; } }

恶汉式

package sun.framework.genesis.beta.designmode.one; /** * @Auther: SunDC * @Date: 2019/11/1 15:32 * @Description: 单例模式 (饿汉式)最常见的两种之一 * 需要注意的是 这是最典型的 以空间换时间案例 */ public class HungerOneClass { private static HungerOneClass hungerOneClass = new HungerOneClass(); // 私有化构造方法 private HungerOneClass() { } public static HungerOneClass getHungerOneClass() { return hungerOneClass; } }
最新回复(0)