Предположим что у нас есть очень простой класс
class Simple
{
public int x;
public string y;
}
все знают что использовать его тоже просто
Simple sp = new Simple();
sp.x=1;
sp.y="aaa";
если создадим второй обект для этого класса
Simple sp1 = new Simple();
значения переменных sp.x и sp.y не будут проинициализированны
Если хотим сделать из нашего класса singleton добавим в него кое что
class Simple
{
//добавим статическую закрытую переменную тогоже типа
private static Simple my_sp;
//
public int x;
public string y;
//сделаем недоступным конструктор по умолчанию
private Simple() {}
//
//добавим открытый статический метод возвращающий инициализированный экземпляр
public static Simple GetInstance()
{
if (my_sp == null)
my_sp = new Simple();
return my_sp;
}
//
}
инициализация теперь выглядит так
Simple sp = Simple.GetInstance();
sp.x=1;
sp.y="aaa";
припопытке создать новый экземпляр
Simple sp1 = Simple.GetInstance();
переменные sp1.x, sp1.y будут иметь те же значения что sp.x, sp.y
Комментариев нет:
Отправить комментарий