核心作用: 保证一个类只有一个实例,并且提供了一个访问该实例的全局访问点。
常见应用场景:
windows的任务管理器 就是一个单例模式。
winwods的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护者仅有的一个实例。
网站的计数器,一般也是采用单例模式实现,否则难以同步。
在Spring的Bean默认就是单例的,这样做的优点是Spring容器可以管理。
Spring MVC框架中,控制器对象也是单例。
单例模式的优点:
由于单例模式只生成一个实例,减少了系统性能的开销。当一个对象的生产需要比较多的资源时,可以通过在应用启动时直接生产一个单例对象,然后永久驻留内存的方式来解决。
单例模式可以在系统设置全局的访问点,优化共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。
常见的五种单例模式:
主要
懒汉式(线程安全,调用效率不高。可以延迟加载)
饿汉式(线程安全,调用效率高。不能延迟加载)
其他
双重检测锁式
静态内部类式(线程安全,调用效率高。可以延迟加载)
枚举单例(