关于单身设计模式的问题

时间:2012-01-21 17:14:59

标签: .net design-patterns c#-4.0 singleton

我正在关注MSDN article以了解单吨设计模式。关于他们遵循的方法我几乎没有问题。

在第二种方法中静态初始化

  • 我不清楚为什么这个班级被宣布为密封 为什么他们将私有实例变量(实例)标记为只读?

2 个答案:

答案 0 :(得分:0)

根据以下句子之一:

  

此外,变量标记为只读,这意味着它可以   仅在静态初始化期间(此处显示)或   在类构造函数中。

不,你严格地不会需要这一点 - 但是如果你允许一个单例被初始化不止一次,它会造成很大的额外混乱和复杂性。

最内层Instance是一个属性,而不是一个类 - 并且使其成为静态允许轻松访问而无需首先创建Instance类的实例,这是不必要的,而不是真的提供任何好处。

答案 1 :(得分:0)

该类未声明为静态,而是密封(其他类不能将其子类化)。这样做是因为有问题的单例实现知道只实例化这个特定类的实例。

如果你继承它:     public class Child: Singleton { ... } Child类仍将实例化基类:
    Child.Instance 仍将返回Singleton的实例),这将导致令人困惑的代码。

readonly增加了代码的可读性,并防止在将来修改类时出错。