单例模式--确保一个类只有一个实例,并提供一个全局访问点。

    xiaoxiao2021-03-26  25

    一、定义:单件模式--确保一个类只有一个实例,并提供一个全局访问点。

    二、方式:

    1.懒汉式

    /** * * @author Kevintan * 经典的单件模式的实现,懒汉式 * synchronized 处理多线程的同步问题。 * 缺点:降低了性能,不利于程序频繁的调用 * 适用场景:性能对应用程序不是很关键。 */ public class Singleton1 { private static Singleton1 uniqueInstance ; private Singleton1() {} public static synchronized Singleton1 getInstance(){ if (uniqueInstance == null) { uniqueInstance = new Singleton1(); } return uniqueInstance; } } 2.饿汉式

    /** * * @author Kevintan * 急切实例化,饿汉式 * 适用于:应用程序总是创建并使用单件实例或创建和运行时的负担不太繁重。 * 缺点:不能用于频繁创建或使用或耗费内存过大的程序中。 */ public class Singleton2 { private static Singleton2 uniqueInstance = new Singleton2(); private Singleton2() {} public static Singleton2 getInstance(){ if (uniqueInstance == null) { uniqueInstance = new Singleton2(); } return uniqueInstance; } } 3.双重检索加锁

    /** * * @author Kevintan *双重检索加锁 *原理:首先检查是否实例已经创建了,如果尚未创建,“才”进行同步。 *这样一来,只有第一次创建实例时会同步。 *优点及适用于:帮助你大大减少时间耗费,提高性能 */ public class Singleton3 { private static volatile Singleton3 uniqueInstance ; private Singleton3() {} public static synchronized Singleton3 getInstance(){ if (uniqueInstance == null) { synchronized (Singleton3.class) { if (uniqueInstance == null) { uniqueInstance = new Singleton3(); } } } return uniqueInstance; } }

    转载请注明原文地址: https://ju.6miu.com/read-662418.html

    最新回复(0)