Java设计模式,单例模式(singleton)
Monday, July 17, 2017
8:25 AM
Java设计模式
23种设计模式概览
单例模式(singleton)
定义:
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
优点:
- 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。
- 单例模式可以在系统设置全局的访问点,优化环境共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。

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





测试多线程环境下五种单例模式的执行效率

创建10万个对象耗时
常见的应用场景
- 网站的计数器。
- 项目中,读取配置文件的类。
- 应用程序的日志应用。这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
- 数据库连接池。因为数据库连接池是一种数据库资源。
- Servlet 编程中的Application 。
- Servlet 编程中,每个Servlet也是单例。
- 在Spring中,每个Bean默认是单例的,这样做便于Spring容器进行管理。
- 在Spring MVC 框架/Struts1框架中,控制器对象也是单例。
- Windows 系统的任务管理器、回收站。
此篇文章难易乎? (单选)
内容很好,若有所悟
一脸懵逼的进来,一脸懵逼的出去
It’s so easy
最后分享、点赞、关注,一气呵成,祝你步步高薪!
已使用 Microsoft OneNote 2016 创建。
