单例类设计问题 [重复]
Posted
技术标签:
【中文标题】单例类设计问题 [重复]【英文标题】:Singleton Class design Issues [duplicate] 【发布时间】:2013-05-06 17:04:04 【问题描述】:下面是一个使用单例设计模式的类:
class Singleton
private static Singleton instance;
private Singleton()
...
public static synchronized Singleton getInstance()
if (instance == null)
instance = new Singleton();
return instance;
...
public void doSomething()
...
我想知道关于上述类的一些设计问题?为什么实例变量instance
是私有的和静态的。我知道私有化使得实例变量只能被该特定类的对象访问,但它有什么帮助?
【问题讨论】:
添加了 Java,因为我不知道 c# 中的 synchronized 关键字。 真的需要惰性实例化吗? @NoobUnChained 我不同意这是一个骗局。他问的是这个特定的实现是否有什么问题,而不是单例的滥用会发生什么。 【参考方案1】:如果它是public,每个人都可以使用Singleton.instance
并会抱怨,因为它是空的。使其私有强制他们使用getInstance()
,这保证返回一个非空实例。
如果不是static,它就是Singleton的实例变量,因此你需要一个Singleton实例来访问唯一的Singleton实例,这没有多大意义。
【讨论】:
以上是关于单例类设计问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章