public static HeadTeacher getInstance() { if (headTeacher == null) { Console.WriteLine("HeadTeacher instance created!"); headTeacher = new HeadTeacher(); return(headTeacher); } else { Console.WriteLine("HeadTeacher instance already exists!"); return(headTeacher); } }
/// <summary> /// Пример работы Singleton. /// </summary> private static void Singleton() { Console.WriteLine("-- Singleton -- \n\r"); var school = new School(); school.Appoint("Иванова Светлана Петровна"); Console.WriteLine("Назначение директора школе."); Console.WriteLine("Имя директора: " + school.HeadTeacher.Name); // Пытаемся изменить директора школы. Но у нас ничего не выйдет. school.HeadTeacher = HeadTeacher.GetInstance("Малинкина Анна Сергеевна"); Console.WriteLine("Имя директора после изменения: " + school.HeadTeacher.Name); Console.WriteLine("Как и должно имя не изменилось."); }
public static HeadTeacher GetInstance(string name) { if (_instance == null) { lock (SyncRoot) { // На всякий случай, ещё раз проверим не был // ли объект создан другим потоком, пока // текущий ждал освобождения блокировки. if (_instance == null) { _instance = new HeadTeacher(name); } } } return(_instance); }
/// <summary> /// Назначение директора. Вот такая у нас интересная школа, без директора ни как. /// </summary> /// <param name="headTeacherName">Имя директора школы</param> public void Appoint(string headTeacherName) { HeadTeacher = HeadTeacher.GetInstance(headTeacherName); }