C/C++为啥日志模块要设计成单例模式的?有啥好处?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++为啥日志模块要设计成单例模式的?有啥好处?相关的知识,希望对你有一定的参考价值。
如题,有没有做过开发的?
减少系统资源开销,由于单例只保留一个对象。
提高创建速度,每次都获取已经存在的对象因此提高创建速度
全局共享对象,由于单例在系统中只存在一个对象实例,因此任何地方使用此对象都是一个对象
使用案例:
缓存、打印机、显卡的驱动程序,等一些临界资源
也可以是日志对象、线程池等,用于减少系统开销,和创建速度,当然我个人认为,池的技术可以优化单例模式。比如线程池,连接池。
解决一种问题的方法有很多种,单例模式一般是省了一个独立全局函数,这样一个日志类就解决了
为啥Spring把bean设计成单态的,这样的设计的好处是啥?
设计的时候没有考虑到并发访问,安全问题吗?
spring设计成单态,一方面是为了效率,还有一方面是节省内存开销.事务,一般用spring都会为这些单态类的某些方法加上事务.声明式事务. 参考技术A 是单例模式吧?
Spring Bean作用域:scope属性
作用域 描述
singleton 默认值,在每个Spring IoC容器中一个bean定义对应一个对象实例。
prototype 一个bean定义对应多个对象实例。
request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的Spring applicationContext情形下有效。
session 在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global session 在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。追问
我知道这些bean的作用域,为什么Spring设计的时候不直接把bean设计成多态的,这样就是线程安全的,每一次HTTP请求都生成新的bean,在修改,展现数据的时候也就不会出现乱套了,而Spring把bean设计成单态肯定有它的好处,要不然Spring就是挖个坑让自己跳,它的好处什么吗?设计成单态的原理是什么?
参考技术B 设计成什么态主要和你的需求有关系,各有优劣!以上是关于C/C++为啥日志模块要设计成单例模式的?有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章