单件模式
来源:互联网 发布:2017年时代网络诗人奖 编辑:程序博客网 时间:2024/06/14 02:45
需求:有些对象我们其实只需要一个,有时候且只能是一个,例如:线程池、数据库连接、日志、打印机、显卡等设备的驱动程序的对象等。这类对象过多可能导致行为异常、资源使用过量和不一致等问题。在这种环境下,我们就需要使用单件模式也称为单例模式,该模式确保一个类只要一个实例,并提供一个全局的访问点。
扩展:单件模式并非只能创建一个实例,可以在类中维护多个实例,通过传入参数的方式来决定取那个实例。
实现:
私有的构造函数可以保证不可在类外创建对象,而提供一个公有的Instance返回这个私有的实例。
多线程: 上述函数仅仅可以在单线程的工程里使用,一旦有多线程那么就有可能创建多个实例。
解决方案1:对instance函数加锁
如果性能不是很关键可以使用,但是如果在频繁运行的地方调用那将是个噩梦。
解决方案2:非延迟实例化 即先创建实例,instance里直接返回
如果创建对象不是很繁重,且不影响程序启动时可以使用。
解决方案3:局部锁
先判断是否为空 然后在里面再进行锁同步,只在第一次创建会进入锁同步。相对于方案1效率高,相对于方案2可以延后创建,不影响程序启动速度以及带来的开始空间浪费问题。
阅读全文
0 0
- 单件模式
- 单件模式
- 设计模式-单件
- singleton单件模式
- Singleton (单件模式)
- 单件模式(Singleton)
- 一番话:单件模式
- 单件模式
- 单件模式
- 单件模式
- 单件模式
- 单件模式
- 单件模式
- singleton 单件模式
- 单件模式
- 一、单件模式
- 单件模式_C++
- 单件模式
- 详述 IntelliJ IDEA 插件的安装及使用方法
- linux入门5
- [BZOJ4816][SDOI2017]数字表格(莫比乌斯反演)
- unity中的旋转
- 阿里云centos环境之tomcat配置<三>
- 单件模式
- css-垂直居中多种解决方式
- 卷积神经网络——输入层、卷积层、激活函数、池化层、全连接层
- JavaWeb 解决中文传参乱码
- pulltorefresh上拉下拉刷新的用法
- ubuntu64-server安装
- 最长公共子序列
- PTA 7-2 列车调度(25 分)
- Tensorflow 学习与复习 Epoch_1 # tensorflow的一些函数方法