每次我有一个应该只有1个实例的类时,我应该使用单例吗?

时间:2013-08-27 11:16:46

标签: java oop singleton

很多时候,我的课程应该只有一个实例。最佳做法是使用单身人士吗?

6 个答案:

答案 0 :(得分:5)

单身人士是全球性的。只有在真正需要的时候才应该使用它们,原因与你的代码不应该有大量的全局变量一样。

“应该有”是一个有效的问题。如果系统不关心有多少实例,请不要将其设为单例。只有当系统真正要求只有一个实例时才应该考虑单例。

答案 1 :(得分:4)

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

答案 2 :(得分:2)

最佳做法是使用依赖注入框架,如Spring或Guice。很多人认为单身人士反对的是反模式,而不是一种好的做法。

答案 3 :(得分:1)

根据我的经验,在大多数情况下(至少在我的情况下:) :)单身人士相当于一个仅由静态attributesmethods组成的类。

singleton pattern是一种通过实施syncronization来降低系统速度的简单方法。

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

如果你可以使用多个instances,那么其他明智的选择依赖injection

几天前阅读的一篇好文章here

答案 4 :(得分:0)

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

当你应该从代码的多个部分访问同一个实例时,使用Singleton是很好的。

答案 5 :(得分:0)

Singleton模式是一种设计解决方案,其中应用程序希望在所有可能的情况下都拥有任何类的一个且只有一个实例,而没有任何异常情况。
enter image description here
For More Click here