3

很多时候,我有一个应该只有 1 个实例的类。最好的做法是使用单例吗?

4

6 回答 6

5

单例是全局状态。仅在真正需要时才应使用它们,原因与您的代码不应包含大量全局变量相同。

“应该有”是操作性问题。如果系统不关心有多少实例,不要让它成为单例。只有当系统确实要求只有一个实例时,您才应该考虑单例。

于 2013-08-27T11:18:26.270 回答
4

您可以使用的另一种模式是工厂方法。这里的好处是工厂可能决定每次都返回相同的实例或新的实例。如果您有一天选择不只想要一个实例,那么这将施加较少的限制,但比如说 - 每个线程一个实例。

于 2013-08-27T11:21:03.340 回答
2

最佳实践是使用像 Spring 或 Guice 这样的依赖注入框架。许多人认为 Singleton 与其说是一种好的实践,不如说是一种反模式。

于 2013-08-27T11:27:11.413 回答
1

根据我的经验,在大多数情况下(至少在我的情况下:))一个单例相当于一个只包含静态attributes和的类methods

singleton pattern是一种通过实现来减慢系统速度的更简单方法syncronization

除非你需要,否则不要去做。

如果您可以多次instances选择它,否则选择依赖injection

几天前在这里读到的一篇好文章。

于 2013-08-27T11:29:57.307 回答
0

我刚刚在其他来源上找到的另一个答案。

当您应该从代码的多个部分访问同一个实例时,单例非常有用。

于 2013-08-27T11:26:40.113 回答
0

单例模式是一种设计解决方案,其中应用程序希望在所有可能的场景中没有任何异常情况下拥有任何类的一个且只有一个实例。
在此处输入图像描述
更多请点击这里

于 2013-08-27T11:46:55.963 回答