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 是在加载类的同时进行对象的创建,所以即使在多线程并发的情况下,仍然可以保证单例。

    • 优势?劣势?

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

  • 相关阅读:
    STL与基础数据结构
    solr基础总结
    linux命令笔记
    SolrCloud集群部署
    oracle SQL笔记
    内存溢出之Tomcat内存配置
    solr查询优化(实践了一下效果比较明显)
    JAVA处理线程超时
    Solr 数据导入 <一>DIH简单使用
    几种防止表单重复提交的方法
  • 原文地址:https://www.cnblogs.com/jing-an-feng-shao/p/7498750.html
Copyright © 2011-2022 走看看