单例模式
概念
常用的一种典型的设计模式,单例模式的方法创建的类在当前进程中只有一个实例,一份资源只能被申请加载一次。
实现
- 饿汉模式:在资源的程序还在初始化的时候就会加载,保证后面能够直接进行使用。
(不涉及线程安全问题 )
优:使用的过程流畅
缺:可能会加载很多不需要的资源,导致程序初始化缓慢 - 懒汉模式: 资源在使用的过程中发现还没加载则申请加载。(游戏中常用且涉及线程安全)
优:程序初始化快
缺:使用过程中衔接不流程,并且在第一次运行某个模块时会比较缓慢,因为此时正在加载相应的资源
需注意的问题
- 使用 static 保证所有对象共用一份资源
- 使用 volatile 防止编译器过度优化(懒汉)
- 实现线程安全。保证资源的加载过程和判断过程的安全
简单代码演示