zoukankan      html  css  js  c++  java
  • GOF23-单列模式

    1.什么是单例模式

    一个类只有一个实列,并且提供一个对外访问该实例的全局访问点。

    常见应用场景:数据库连接池,项目中读取配置文件的类,servlet也是单列,Spring中的Bean默认也是单列

    2.单例模式好处

    • 由于单例模式仅有一个实例,对系统来说性能开销较小,如:应用程序启动读取配置文件时,可以产生一个单列对象,使其驻留在内存中。
    • 单列模式存在对外全局访问点,可以优化环境共享资源的访问。

    3.常用单例模式

    1. 饿汉式
    2. 懒汉式
    3. 双重检查锁
    4. 静态内部类
    5. 枚举类

    一般情况下,大家知道前两个已经基本ok了,如果再拿后三个跟面试管去“砍”,相信他会对你另眼相看。

    • 饿汉式(线程安全,访问效率高,不能赖加载)

    image

    • 懒汉式(线程安全,访问效率低,可以懒加载)

    image

    • 双重检查锁

    image

    image

     

    • 静态内部类(推荐使用)

    image

     

    • 枚举类(基于JVM底层实现,天然线程安全,不能延迟加载)

    image

    4.性能对比

    测试代码:

    image

    image

    五种单列模式耗时如下:

    说明:以下只是相对测试结果,机器配置不同可能测试结果有出入。

        

    单列模式名

    耗时

    饿汉式 14ms
    懒汉式 4404ms
    双重检查锁 18ms
    静态内部类 16ms
    单例 15ms
  • 相关阅读:
    OpenCV基本函数学习
    OpenCV:概述、结构和内容
    NS2典型例子简单分析
    NS2仿真过程中需要的语言及基本组件
    洛谷 P2393 yyy loves Maths II
    洛谷 P1922 女仆咖啡厅桌游吧
    洛谷 P2559 [AHOI2002]哈利·波特与魔法石
    洛谷 P1301 魔鬼之城
    洛谷 P2383 狗哥玩木棒
    洛谷 P2298 Mzc和男家丁的游戏
  • 原文地址:https://www.cnblogs.com/leebaul/p/11347078.html
Copyright © 2011-2022 走看看