package SingleInstanceModel; /** * Created by JYM on 2019/1/8 * 单例模式:Holder方式 * Holder的方式完全是借助了类加载的特点。 * */ //final 不允许被继承 public final class Singleton_4 { //实例变量 private byte[] data = new byte[1024]; private Singleton_4() {} //在静态内部类中持有Singleton的实例,并且可被直接初始化; private static class Holder { private static Singleton_4 instance = new Singleton_4(); } //调用getInstance方法,事实上是获得Holder的instance静态属性 public static Singleton_4 getInstance() { return Holder.instance; } } /** * 在Singleton_4类中并没有instance的静态成员,而是将其放到了静态内部类Holder之中,因此在Singleton类的初始化过程中并不会创建 * Singleton的实例,Holder类中定义了Singleton的静态变量,并且直接进行了实例化,当Holder被主动引用的时候则会创建Singleton的实例, * Singleton实例的创建过程在Java程序编译时期收集至<clinit>()方法中,该方法又是同步方法,同步方法可以保证内存的可见性、JVM指令的顺序性和原子性 * Holder方式的单例设计是最好的设计之一,也是目前使用比较广的设计之一。 * */
单例设计模式的设计——Holder方式
最新推荐文章于 2025-07-04 19:18:06 发布