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

    • 优势?劣势?

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

  • 相关阅读:
    !function() {}()
    element.dataset API
    正则匹配 数字和英文状态下的逗号
    《vim实用技巧》读书笔记
    ajax分页
    smarty分页类
    数组排序
    数组大类
    自动刷新价格
    简单购物车
  • 原文地址:https://www.cnblogs.com/jing-an-feng-shao/p/7498750.html
Copyright © 2011-2022 走看看