创建型模式 ☞ 单例模式
目录
单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法,getInstance())
✨单例模式特点
- 某个类只能由一个实例(构造器私有)
- 它必须自行创建这个实例(自己编写实例化逻辑)
- 它必须自行向整个系统提供这个实例(对外提供实例化方法)
¶单例设计模式八种方式
✨单例模式的八种方式:
- 饿汉式(静态常量)
- 饿汉式(静态代码块)
- 懒汉式(线程不安全)
- 懒汉式(线程安全,同步方法)
- 懒汉方式(线程安全,同步代码块)
- 双重检查
- 静态内部类
- 枚举
🤔如何保证类在内存中只有一个对象尼?
- 构造方法私有
- 在成员位置自己创建一个对象
- 通过一个公共的方法提供访问
类图
使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现
私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量
¶实现
¶饿汉式单例模式
类一加载就创建对象
1 | class Student { |
¶懒汉式单例模式
只有在使用的时候才创建对象
1 | class Lazy { |
¶面试题
单例模式的思想是什么?
懒汉式的思想就是延迟加载
开发中:饿汉式(是不会出现问题的单例模式)
面试中:懒汉式(可能会出现问题的单例模式,线程不安全)
判断程序是否存在线程安全问题需要考虑的三点:
- 是否为多线程环境
- 是否有共享数据
- 是否有多条语句操作共享数据
在外部类进行类状态时,静态内部类不会被装载