num01---单例模式
* 单例模式【创建型】
- 单例模式的构造函数私有化,这也是真单例的标准。
- 单例模式的真实应用场景:
* 由于构造方法只执行一次,在构造方法中解析xml配置文件,可保证配置文件只被解析一次。当然,这种机制也可以在静态代码块中完成。
* 单例模式的对象无法被垃圾回收器回收,所以通常使用单例模式来实现缓存机制。因为缓存是不希望被回收的。
- 其实除了真单例之外,还存在假单例,例如:Servlet就是一个假单例,因为Servlet构造方法没有私有化,由于Servlet对象的生命周期
由容器来管理,程序员无权干涉,所以Servlet对象也是一个单实例的。
单例模式的类无法被继承。因为子类需要调用父类中的构造方法,单例模式的构造方法私有化(防止new对象),在子类中无法调用,所以单例模式的类型无法被继承。
1、饿汉式:(静态常量),类加载时创建对象
2、饿汉式(静态代码块)
3、懒汉式 (线程不安全)
4、懒汉式(线程安全,同步方法)
5、懒汉式(线程安全,同步代码块)
这种方法其实连线程安全都无法保证,只要进入if 语句块中, 各个线程都还是要创建,这种方案其实错误。
6、双重检查,推荐,优秀
7、静态内部类,推荐使用
8、枚举
-------------------------------
----------------------------------
JDK源码中单例模式: Runtime.class中,饿汉式