计算机系统应用教程网站

网站首页 > 技术文章 正文

C++为什么不提倡使用单例模式 C++为什么不提倡使用单例模式

btikc 2024-09-24 08:07:36 技术文章 16 ℃ 0 评论

C++为什么不提倡使用单例模式?

C++为什么不提倡使用单例模式?在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份c语言的资料,从专业入门到高级教程,全部无偿共享给大家。

有个词叫削足适履,很适合片面强调全局变量/单例模式危害的人,语法功能设计出来就是有自己的用武之地的。我暂时还不知道有任何一种语言不支持全局变量,说明这个东西就是编程必须的,只能说要慎用不要滥用。

归根结底来说该是全局生命周期的就可以用静态对象/单例对象,不该是的就要使用自己的生命周期管理,比如单函数生命周期、request生命周期、线程生命周期等等。像内存池、线程池这样的公共服务,使用全局生命周期并没有什么不妥当的,需要杜绝的是利用全局变量传递参数一类的滥用。

如绝对有必要单例模式也可以一定程度上被改造为受限制的多例模式,通常会利用thread local的机制,不同线程可以获取到不同的实例,哪个线程获取到哪个实例则可以通过其他机制来控制。

单例模式和普通的全局变量相比,优点是一定程度上隔离了对象初始化过程的触发时机,可以灵活采用静态变量构造、使用编译器默认机制、首次使用时构造、手动构造等不同实现机制,而使用时的方式是一致的。出于管理的目的可以要求所有的全局变量、静态变量、单例模式都需要额外review才能引入,但一味强调缺点就是教条主义了。

基本上来说如果你引入一个非常量的全局变量或singleton,那么也由你来负责保证当它无论以任何顺序、任何并发度调用的情况下,都不对外部业务产生实际可见的副作用,如果做不到这部分交给别人来写。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表