Вопросы по шаблону синглтон-дизайна - PullRequest
1 голос
/ 21 января 2012

Я следую статье MSDN , чтобы понять шаблон проектирования одной тонны. У меня есть несколько вопросов относительно подхода, которому они следовали.

во втором подходе Статическая инициализация

  • мне не понятно, почему этот класс был объявлен запечатанным.
    почему они помечают личную переменную экземпляра (instance) только для чтения?

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Класс был объявлен не как статический, а как закрытый (другие классы не могут его наследовать). Это сделано потому, что рассматриваемая одноэлементная реализация знает, как создавать экземпляры только этого конкретного класса.

Если вы подкласс это: public class Child: Singleton { ... } Дочерний класс все еще будет создавать экземпляр базового класса:
Child.Instance будет по-прежнему возвращать экземпляр Singleton), что приведет к запутанному коду.

Readonly повышает читабельность кода и предотвращает ошибки в будущих модификациях класса.

0 голосов
/ 21 января 2012

За одно из следующих предложений:

Кроме того, переменная помечена только для чтения, что означает, что она может назначаться только во время статической инициализации (которая показана здесь) или в конструкторе класса.

Нет, вам строго не нужно нуждаться в этом - но это вызовет значительную дополнительную путаницу и сложность, если вы позволите инициализировать синглтон более одного раза.

Самое внутреннее Instance является свойством, а не классом - и его статичность обеспечивает легкий доступ без необходимости сначала создавать экземпляр класса Instance, который был бы ненужным и не приносил никакой пользы. .

...