代码之家  ›  专栏  ›  技术社区  ›  Nathan Wheeler

嵌套单例类

  •  0
  • Nathan Wheeler  · 技术社区  · 15 年前

    是否可以在C#中的非单例类中嵌套单例类,如果可以,在这种情况下对单例的生命周期是否有任何限制?

    public class NonSingletonClass
    {
      public NonSingletonClass()
      {
        // Initialize some stuff.
      }
    
      // Put some methods here.
    
      public class SingletonClass
      {
        // Singleton construction goes here.
    
        // Put some methods here.
      }
    }
    

    在我的应用程序的设计中,这是有意义的,但在实际实现之前,我需要知道任何潜在的陷阱。

    NonSingletonClass 在本例中,是任务的实例化。这个 SingletonClass 是由用户使用的数据存储库 非单类 . 非单类

    4 回复  |  直到 15 年前
        1
  •  2
  •   Pharabus    15 年前

    我相信你在寻找一种单一国家模式

    这个链接很好地描述了这一点,并提供了带有单例模式的合同 monostate pattern

        2
  •  4
  •   Jon Skeet    15 年前

    是的,单身人士可以完全舒适地生活在非单身人士的家中。

    一些

    你有什么特别担心的吗?

        3
  •  0
  •   JonH    15 年前

    我想我的第一个问题是,考虑到你所说的“我的应用程序的设计很有意义”,你能给我们提供更多的细节吗。抽象工厂和构建器只是一些使用单例类的模式。您正在存储某种要在NonSingletonClass中使用的全局数据。

        4
  •  0
  •   Dennis Sellinger    15 年前

    只有在允许多线程访问的情况下,这些方法才适用,也就是说,首先,我们必须确保适当的锁处于适当的位置,以便单例始终处于有效状态。第二,如果单例状态正在改变,并且对象以不确定的顺序访问,那么结果将是不可预测的(即竞争条件)。