#### 单例模式定义 在软件系统中,一个类只有一个实例对象。(该类只提供一个取得实例的静态方法) <br> # 推荐使用的三种单例模式 - DoubleCheck - 静态内部类 - 枚举 <br> ### 1.DoubleCheck 双重检查 <br> 特点:效率高,线程安全,延迟加载。 <br> ``` class DoubleCheck { private stati
单例模式定义 在软件系统中,一个类只有一个实例对象。(该类只提供一个取得实例的静态方法) 推荐使用的三种单例模式 DoubleCheck 静态内部类 枚举 1.DoubleCheck 双重检查 特点:效率高,线程安全,延迟加载。 class DoubleCheck { private static volatile DoubleCheck instance; private DoubleCheck(){} public static DoubleCheck getInstance() { /* DoubleCheck如何实现?线程安全和效率提升 在多线程的环境下,假设线程A直接进入#2,实例化对象。 且实例化方法外用synchronized修饰,所以是线程安全的。 当线程A实例化对象结束,对象instance已经被创建,执行到#1的线程将会直接调到#3,返回instance 且DoubleCheck实现了延迟加载(new在方法里) */ if(instance==null) //#1 { synchronized (DoubleCheck.class) //#2 { if(instance==null) { instance = new DoubleCheck(); //#3 } } } return instance; } } public class Operation {