ПКРПСиБД LAB4 Бочаров И.А. (548481)
Текст из файла
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №4
по дисциплине:
Проектирование крупных распределенных программных систем и баз данных
тема: «Разработка одного из поведенческих паттернов»
вариант №5 – «Mediator/Посредник»
Выполнил:
Бочаров Иван Андреевич
Проверил:
к.т.н., доц. Куриленко Иван Евгеньевич
Москва
2012 г.
Шаблон проектирования «Посредник»
Категория шаблона
Шаблон проектирования «Посредник» относится к поведенческим шаблонам проектирования.
Описание шаблона
Определяет объект, инкапсулирующий способ взаимодействия множества объектов.
Уместность применения
Шаблон следует применять, если:
-
Имеются объекты, связи между которыми сложны и четко определены
-
Нельзя повторно использовать какой-либо из объектов, поскольку он обменивается информацией со многими другими объектами
-
Необходимо, чтобы поведение, распределенное между несколькими классами, поддавалось настройке без порождения множества подклассов
Преимущества, достигаемые при использовании данного шаблона
Данный шаблон:
-
Снижает число порождаемых подклассов
-
Устраняет связанность между коллегами
-
Упрощает протоколы взаимодействия объектов
-
Абстрагирует способ кооперирования объектов
Недостатки данного шаблона
Данный шаблон централизует управление. Паттерн посредник переносит сложность взаимодействия в класс-посредник. Поскольку посредник инкапсулирует протоколы, он может быть сложнее отдельных коллег. В результате сам посредник становится монолитом, который трудно сопровождать.
Реализация
Colleague.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MediatorPattern
{
class Colleague
{
bool isON;
public bool IsON
{
get { return isON; }
set {
mediator.Send(this, value);
this.isON = value;
}
}
string info;
public string Info
{
get { return info; }
set { info = value; }
}
Mediator mediator;
public Colleague(Mediator med) {
this.mediator = med;
this.isON = true;
}
}
}
Mediator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MediatorPattern
{
class Mediator
{
Colleague colleague1, colleague2;
internal Colleague Colleague2
{
get { return colleague2; }
set { colleague2 = value; }
}
internal Colleague Colleague1
{
get { return colleague1; }
set { colleague1 = value; }
}
public void Send(Colleague colleague, bool value)
{
Colleague col = colleague == colleague1 ? colleague2 : colleague1;
if (value)
{
col.Info = "My colleague doesn't sleep!";
}
else
{
col.Info = "My colleague is asleep";
}
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MediatorPattern
{
class Program
{
static void Main(string[] args)
{
Mediator mediator = new Mediator();
Colleague col1 = new Colleague(mediator);
Colleague col2 = new Colleague(mediator);
mediator.Colleague1 = col1;
mediator.Colleague2 = col2;
col1.IsON = true;
col2.IsON = false;
Console.WriteLine(col1.Info);
Console.WriteLine(col2.Info);
col1.IsON = false;
col2.IsON = true;
Console.WriteLine(col1.Info);
Console.WriteLine(col2.Info);
Console.ReadLine();
}
}
}
UML-диаграмма классов
Диаграмма последовательностей
Литература
-
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб: Питер, 2001. — 368 с.: ил. (Серия «Библиотека программиста»)
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.