【问题标题】: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 我不同意这是一个骗局。他问的是这个特定的实现是否有什么问题,而不是单例的滥用会发生什么。

标签: java design-patterns singleton


【解决方案1】:

如果它是public,每个人都可以使用Singleton.instance 并会抱怨,因为它是空的。使其私有强制他们使用getInstance(),这保证返回一个非空实例。

如果不是static,它就是Singleton的实例变量,因此你需要一个Singleton实例来访问唯一的Singleton实例,这没有多大意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多