1 课堂概述
1.1 定义
1.2 适用场景
1.3 优点
1.4 缺点
1.5 重点
1.6 实用技能
1.7 单例-相关设计模式
1 课堂概述
1.1 定义
定义:保证一个类仅有一个实例,并提供一个全局访问点
类型:创建型
1.2 使用场景
a ◆想确保任何情况下都绝对只有一个实例
b 当一个对象需要频繁的被创建销毁的时候,并且创建或者销毁的性能无法优化
例如:
单服务情况下网站的计数器可以使用单例模式;
线程池情况下使用单例模式;
数据库连接池也会使用单例模式;
1.3 优点
a 在内存只有一个实例,减少了内存开销
b 可以避免对资源的多重占用
c 设置全局访问点,严格控制访问(对外不能被new出来,无法实例化)
1.4 缺点
没有接口,扩展困难
1.5 重点
a 私有构造器 禁止单例类外部调用构造函数来创建对象,需要设置该构造函数的权限为private
b 线程安全
c 延迟加载 (使用的时候创建,而不是初始化定的时候创建,可以节省开销)
d 序列化和反序列化安全 (序列化和反序列化会对单例模式破坏) (加分项)
e 反射 (单例模式如何应对反射攻击)(加分项)
f doublecheck 双层检查锁的内存机制
g 单例静态内部类的实现方案
1.6 实用技能
a 反编译
b 内存原理
c 多线层debug
1.7 单例-相关设计模式
a 单例模式和工厂模式
b 单例模式和享元模式
诸葛