单例模式

来源:互联网 发布:项目经理转行数据分析 编辑:程序博客网 时间:2024/06/06 03:57

单例模式有以下特点:
1.单例类只能有一个实例;
2.单例类必须自己创建自己的唯一实例;
3.单例类必须给所有其他对象提供这一实例。

懒汉单例模式:

这里写图片描述

饿汉单例模式:

这里写图片描述

饿汉式和懒汉式区别

从名字上来说,饿汉和懒汉:
饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了;
懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。

从以下两点再区分以下这两种方式:

1.线程安全:
饿汉模式:天生就是线程安全的,可以直接用于多线程而不会出现问题;
懒汉模式:本身是非线程安全的,可以通过synchronized实现线程安全。

2.资源加载和性能:
饿汉模式:在类创建的时候就实例化一个静态的实例出来,不管之后用不用这个实例,这个实例会一直存在,占据一定的内存,相应的,在第一次调用的时候速度也会更快,因为资源已经初始化好了;
懒汉模式:在第一次使用该单例的时候才会创建这个实例出来,第一次调用的速度会相对慢一点,实例长时间不使用的话,系统会自动回收。

一般使用懒汉型单例模式!

0 0