zoukankan      html  css  js  c++  java
  • 设计模式(一)单例模式:1-饿汉模式(Eager)

    思想:

      饿汉模式是最常提及的2种单例模式之一,其核心思想,是类持有一个自身的 instance 属性,并且在申明的同时立即初始化。

      同时,类将自身的构造器权限设为 private,防止外部代码创建对象,对外只提供一个静态的 getInstance() 方法,作为获取单例的唯一入口。

    public final class EagerSingleton {
    
        private static final EagerSingleton instance = new EagerSingleton();
    
        private EagerSingleton() {
            if (instance != null) {
                throw new IllegalStateException();
            }
        }
    
        public static final EagerSingleton getInstance() {
            return instance;
        }
    
    }
    • 为什么在私有构造器中加入对 instance 属性的空校验? 

      为了阻止反射的入侵,从而打破单例。

    • 多线程的情况下会不会打破单例?

      不会,因为 EagerSingleton 是在加载类的同时进行对象的创建,所以即使在多线程并发的情况下,仍然可以保证单例。

    • 优势?劣势?

      在加载类的同时创建单例对象,如果这个对象不是立刻需要使用的,会额外增加内存的消耗。

  • 相关阅读:
    Ubuntu使用PBIS认证
    命令行运行Python脚本时传入参数的三种方式
    Python中调用shell
    Install chocolatey
    Configure vyatta
    Linux: Block Port With IPtables
    转:PHPStorm+XDebug进行调试图文教程
    转 Fira Code | 为写程序而生的字体
    转 [PHP]
    转:Drupal 如何得到字段的值?
  • 原文地址:https://www.cnblogs.com/jing-an-feng-shao/p/7498750.html
Copyright © 2011-2022 走看看