一、定义:单件模式--确保一个类只有一个实例,并提供一个全局访问点。
二、方式:
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; } }
新闻热点
疑难解答