我什么时候应该在C++;? 从一开始C++用户的角度来看,我认为单用类的唯一原因与我想使用静态变量时的情况类似。你们知道什么时候使用单例类最合适吗?

我什么时候应该在C++;? 从一开始C++用户的角度来看,我认为单用类的唯一原因与我想使用静态变量时的情况类似。你们知道什么时候使用单例类最合适吗?,c++,singleton,C++,Singleton,单例类是美化的全局变量。仅在绝对必要时使用,即当对象在整个实现范围内只有一个实例时。只有在极少数情况下才应该使用单实例,在这种情况下,只有一个对象是至关重要的。这根本不像你想象的那么频繁 通常,仅仅创建一个有问题的类的实例就足够了,但并没有投入强制对象唯一性所需的所有机制 每次我使用一个单例(或者在我使用的代码库中找到一个),我最终都会删除它,因为我需要改变行为,而单例机制会阻碍我。在我们的代码(支付处理)中,我还没有看到单身人士真正有意义的案例。我遇到过很多这样的情况:我只得到了一个特定类的实

单例类是美化的全局变量。仅在绝对必要时使用,即当对象在整个实现范围内只有一个实例时。

只有在极少数情况下才应该使用单实例,在这种情况下,只有一个对象是至关重要的。这根本不像你想象的那么频繁

通常,仅仅创建一个有问题的类的实例就足够了,但并没有投入强制对象唯一性所需的所有机制


每次我使用一个单例(或者在我使用的代码库中找到一个),我最终都会删除它,因为我需要改变行为,而单例机制会阻碍我。在我们的代码(支付处理)中,我还没有看到单身人士真正有意义的案例。我遇到过很多这样的情况:我只得到了一个特定类的实例,但没有一个是通过单例模式强制执行该类是必要的或有用的。

我想不出任何使用单例类合适的实例


在Java中,它们主要用于组织。不过,在C++中,你应该使用命名空间。

< P>昨天黑客新闻中有一个帖子谈到使用单体不是一个好主意。关于何时使用单例(全局配置数据、Web服务器应用程序中的会话管理)是一个好主意,有几个想法,但是对于单例的每一个理由,也有很好的理由来解释为什么这不是一个好主意

当你真正需要它时,你就会知道

这可能永远不会发生


当你认为你想要它的时候,你可能是错的。

在游戏开发领域,我可以想出几个理由,让一个类实现为单例是绝对必要的:


物理引擎、精灵处理程序、重力处理程序(如果与物理引擎分离)、输入解析器等。

我曾经使用全局静态访问器创建单例:
UserRegistry::getInstance()
。现在,在这个时代,我只使用了一个。还有助于单元测试。

无需单例即可解决所有问题。但我发现自己用它来更好地控制对象的初始化和破坏,比如图形上下文。或者当使用状态机更好地控制状态转换时。此外,在(极少数)情况下,当系统资源限制为1个单元(例如控制台)时,以及在使用多线程以防止条件竞争时。
()

为什么不总是使用静态变量呢?什么时候我不需要使用单例类?@Mark:静态变量也是美化的全局变量。甚至可能改进全局变量,因为它们至少限于类上下文。@Mark你在说什么?让多个事物做同一件事的目的是什么?@Mark单例模式不是C++。它是一种在C++中可能实现的设计模式。你认为静态变量是一个特征?@标记命名空间和静态成员类是不一样的。这些都不需要单独实现。