Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / Лабораторная работа 3 / ПКРПСиБД LAB3 Моисеев Н.А..docx
Скачиваний:
21
Добавлен:
28.06.2014
Размер:
146.26 Кб
Скачать

Диаграмма классов

Одиночка

Описание

Паттерн одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.

Преимущества

  • Контролируемый доступ к единственному экземпляру

Недостатки

  • Глобальные объекты могут быть вредны для объектного программирования, в некоторых случаях приводя к созданию не масштабируемого проекта.

  • Усложняет написание модульных тестов и следование TDD

Детали реализации

public class Singleton

{

private static readonly object SyncRoot = new object();

private static Singleton _instance;

private Singleton(){}

public static Singleton Instance

{

get

{

if (_instance == null)

{

lock (SyncRoot)

{

if (_instance == null)

{

Console.WriteLine("Создание объекта");

_instance = new Singleton();

}

}

}

Console.WriteLine("Возвращение объекта");

return _instance;

}

}

}

Диаграмма классов

Мультитон

Описание

Гарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним

Преимущества

  • Применение шаблона позволяет достичь того же эффекта, что и применение паттерна одиночка, но может использоваться как с жестко заданным списком экземпляров, так и с созданием по требованию.

Недостатки

  • Минусом шаблона является возможность появления большого числа зависимых от него частей приложения.

Детали реализации

public class Multiton

{

private static readonly Dictionary<object, Multiton> Instances = new Dictionary<object, Multiton>();

private Multiton() {}

public static Multiton GetInstance(object key)

{

lock (Instances)

{

Multiton instance;

if (!Instances.TryGetValue(key, out instance))

{

Console.WriteLine("Создаем объект:" + key);

instance = new Multiton();

Instances.Add(key, instance);

}

Console.WriteLine("Возвращаем объект: " + key);

return instance;

}

}

}

Диаграмма классов

Литература

  1. http://wikipedia.org

  2. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования

  3. http://msdn.microsoft.com/

Соседние файлы в папке Лабораторная работа 3