Java设计模式,单例模式(singleton)
    Monday, July 17, 2017
    8:25 AM
    Java设计模式
    一张图搞定Java设计模式,单例模式(singleton)
    23种设计模式概览
    单例模式(singleton)
    定义
    保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
    优点:

    • 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。
    • 单例模式可以在系统设置全局的访问点,优化环境共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。

    一张图搞定Java设计模式,单例模式(singleton)
    常见的五种单例模式实现方式:

    • 饿汉式:线程安全,调用效率高。但是,不能延时加载。
    • 懒汉式:线程安全,调用效率不高。但是,可以延时加载。
    • 双重检测锁式:由于JVM底层内部模型原因,偶尔会出现问题。不建议使用。
    • 静态内部类式:线程安全,调用效率高。但是,可以延时加载。需要延迟加载的,优于懒汉式。
    • 枚举单例:线程安全,调用效率高,不能延时加载。使用简单。不需要延迟加载的,优于饿汉式。

    一张图搞定Java设计模式,单例模式(singleton)
    一张图搞定Java设计模式,单例模式(singleton)
    一张图搞定Java设计模式,单例模式(singleton)
    一张图搞定Java设计模式,单例模式(singleton)
    一张图搞定Java设计模式,单例模式(singleton)
    测试多线程环境下五种单例模式的执行效率
    一张图搞定Java设计模式,单例模式(singleton)
    创建10万个对象耗时
    常见的应用场景

    • 网站的计数器。
    • 项目中,读取配置文件的类。
    • 应用程序的日志应用。这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
    • 数据库连接池。因为数据库连接池是一种数据库资源。
    • Servlet 编程中的Application 。
    • Servlet 编程中,每个Servlet也是单例。
    • 在Spring中,每个Bean默认是单例的,这样做便于Spring容器进行管理。
    • 在Spring MVC 框架/Struts1框架中,控制器对象也是单例。
    • Windows 系统的任务管理器、回收站。

    此篇文章难易乎? (单选)
    内容很好,若有所悟
    一脸懵逼的进来,一脸懵逼的出去
    It’s so easy
    最后分享、点赞、关注,一气呵成,祝你步步高薪!
    已使用 Microsoft OneNote 2016 创建。