Опишите графическую нотацию OMT для диаграмм взаимодействия.
§ Время на диаграммах взаимодействий откладывается сверху вниз § Сплошная вертикальная черта означает время жизни объекта, до момента создания объекта вертикальная линия идет пунктиром § Вертикальный прямоугольник говорит о том, что объект активен, т.е. обрабатывает какой-либо запрос (выполняет какой-либо метод) § Соглашение об именовании объектов такое же, как для диаграмм объектов § Запросы, посылаемые другим объектам (вызовы методов), обозначаются горизонтальной стрелкой, указывающей на объект получатель; имя запроса (метода) показывается над стрелкой § Запрос на создание объекта обозначается горизонтальной пунктирной стрелкой § Запрос объекта самому себе изображается стрелкой на этот же объект В чем заключается принцип программирования в соответствии с интерфейсом, а не реализацией?
§ Взаимодействие объектов должно проходить строго через интерфейс, т.к. клиенту не нужно знать информацию о конкретных типах объектов § Такой подход может кардинально уменьшить число зависимостей между подсистемами § Но, т.к. клиенты не знают, объекты какого конкретного класса будут созданы, следовательно, самостоятельно создать эти объекты не могут; здесь приходят на помощь порождающие паттерны Изобразите диаграмму классов для паттерна «Абстрактная фабрика».
Как связаны между собой паттерны «Фабричный метод» и «Абстрактная фабрика»? Абстрактная фабрика реализуется с помощью фабричных методов. Фабричный метод - является частным случаем абстрактной фабрики с одним видом продукта. Разница лишь в том, что фабрика создает семейства (наборы) объектов
Опишите на языке C# несколько классов/интерфейсов, в совокупности реализующих паттерн «Абстрактная фабрика».
КОД:/* type1 of objects */ interface Type1 { void DoIt(); } class Type1Object1: Type1 { public void DoIt() { Console.WriteLine("type 1 object 1"); } } class Type1Object2: Type1 { public void DoIt() { Console.WriteLine("type 1 object 2"); } } /* type2 of objects */ interface Type2 { void DoIt(); } class Type2Object1: Type2 { public void DoIt() { Console.WriteLine("type 2 object 1"); } } class Type2Object2: Type2 { public void DoIt() { Console.WriteLine("type 2 object 2"); } } /* фабрики */ interface Factory { Type1 GetType1(); Type2 GetType2(); } class ConcreteFactory1: Factory { public Type1 GetType1() { return new Type1Object1(); } public Type2 GetType2() { return new Type2Object1(); } } class ConcreteFactory2: Factory { public Type1 GetType1() { return new Type1Object2(); } public Type2 GetType2() { return new Type2Object2(); } } //main program class Program { static void Main(string[] args) { Factory factory = new ConcreteFactory2(); //определяем какой объет будет создаваться Type1 obj1 = factory.GetType1(); Type2 obj2 = factory.GetType2(); obj1.DoIt(); obj2.DoIt(); Console.ReadLine(); } } В каких ситуациях следует использовать паттерн «Прототип»? С помощью каких средств в.NET можно реализовать данный паттерн?
§ Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа § Используется когда/для: инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки экземпляры класса могут находиться в одном из не очень большого числа различных состояний; может оказаться удобнее установить соответствующее число прототипов и клонировать их, а не инстанцировать каждый раз класс вручную в подходящем состоянии. Изобразите диаграмму взаимодействия для паттерна «Строитель».
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|