【问题标题】:Singleton and other parameterized constructors单例和其他参数化构造函数
【发布时间】:2014-03-05 23:28:12
【问题描述】:

我刚刚通过以下简单代码使我的班级单身:

public sealed class Singleton
{
    private static Singleton instance=null;

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            if (instance==null)
            {
                instance = new Singleton();
            }
            return instance;
        }
    }
}

现在,我还希望能够使用构造函数设置一些属性。但是,我有点担心,因为这是我第一次使用单例。我有以下问题:

  1. 我怎样才能拥有其他参数化构造函数,并确保当客户端应用程序使用我的类时,它们会获得单例。

  2. 拥有多个带有单例类的构造函数会不会是个坏主意?

  3. 什么是多次调用具有不同值的新“参数化构造函数”?

【问题讨论】:

  • 外部构造函数破坏了单例的整个想法。你不能自己实例化单例,这就是保持它single的原因。
  • 好的,这意味着单例只适用于无状态对象,如服务?
  • 单例可以有状态,它只是在所有实例之间共享,并且实例的数量始终等于1。单例通常是无状态的,但这主要是因为它是有意义的,而不一定是必需的。
  • 不是一个好主意,单例实例上的设置或初始化方法,或者只是离散属性会更好。 PS,在你做任何严肃的事情之前,你可能想谷歌以获得更好的实施。
  • 你用单例解决了什么问题?你在为patternitis 苦恼吗?

标签: c# .net design-patterns singleton


【解决方案1】:

单例是无状态的,不应该有任何状态。通过查看您的问题,您正在寻找可以由 Singleton 创建的工厂模式。我认为这个链接会帮助你factory-method-and-singleton-patterns

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多