示例#1
0
 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);
     }
 }
示例#2
0
        /// <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("Как и должно имя не изменилось.");
        }
示例#3
0
        public static HeadTeacher GetInstance(string name)
        {
            if (_instance == null)
            {
                lock (SyncRoot)
                {
                    // На всякий случай, ещё раз проверим не был
                    // ли объект создан другим потоком, пока
                    // текущий ждал освобождения блокировки.
                    if (_instance == null)
                    {
                        _instance = new HeadTeacher(name);
                    }
                }
            }

            return(_instance);
        }
示例#4
0
 /// <summary>
 /// Назначение директора. Вот такая у нас интересная школа, без директора ни как.
 /// </summary>
 /// <param name="headTeacherName">Имя директора школы</param>
 public void Appoint(string headTeacherName)
 {
     HeadTeacher = HeadTeacher.GetInstance(headTeacherName);
 }