среда, 22 октября 2008 г.

Singleton

Предположим что у нас есть очень простой класс

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

Комментариев нет:

Locations of visitors to this page