Вот как я пишу свои одноэлементные классы.
public class MyClass
{
/// <summary>
/// Singleton
/// </summary>
private static MyClass instance;
/// <summary>
/// Singleton access.
/// </summary>
public static MyClass Instance
{
get
{
if (_instance == null)
{
_instance = new MyClass();
}
return _instance;
}
}
private MyClass() { .... }
}
Как создать шаблон Singleton, который можно использовать повторно?
Модели Singleton представляют следующие проблемы.
- Конструктор
private
илиprotected
. - Базовый класс не может создать экземпляр унаследованного класса. Поэтому вы можете повторно использовать общий абстрактный
MyAbstractSingletonClass
. - Он должен иметь локальное свойство только для чтения, чтобы получить экземпляр.
Проблема
Я использую этот шаблон для нескольких классов и всегда должен писать один и тот же код. Как я могу написать что-то, что используется повторно, когда мне нужен синглтон?