ПКРПСиБД LAB6 Бочаров И.А. (Лабораторная работа 6)
Описание файла
Файл "ПКРПСиБД LAB6 Бочаров И.А." внутри архива находится в папке "Лабораторная работа 6". Документ из архива "Лабораторная работа 6", который расположен в категории "". Всё это находится в предмете "распределённые ис и базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "распределённые ис и базы данных" в общих файлах.
Онлайн просмотр документа "ПКРПСиБД LAB6 Бочаров И.А."
Текст из документа "ПКРПСиБД LAB6 Бочаров И.А."
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №6
по дисциплине:
Проектирование крупных распределенных программных систем и баз данных
тема: «Разработка одного из структурных паттернов»
вариант №5 – «Faсade/Фасад»
Выполнил:
Бочаров Иван Андреевич
Проверил:
к.т.н., доц. Куриленко Иван Евгеньевич
Москва
2012 г.
Шаблон проектирования «Фасад»
Категория шаблона
Шаблон проектирования «Фасад» относится к структурным шаблонам проектирования.
Описание шаблона
Представляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
Уместность применения
Шаблон следует применять, если:
-
Необходимо предоставить простой интерфейс к сложной подсистеме
-
Между клиентами и классами реализации существует много зависимостей
-
Необходимо разделить систему на различные «слои»
Преимущества, достигаемые при использовании данного шаблона
Данный шаблон:
-
Изолирует клиентов от компонентов подсистемы, уменьшая тем самым число объектов, с которыми клиентам приходится иметь дело, и упрощая работу с подсистемой
-
Позволяет ослабить связанность между подсистемой и ее клиентами
-
Не препятствует приложениям напрямую обращаться к классам подсистемы, если это необходимо. Это позволяет достигать компромисса между простотой и общностью
Недостатки данного шаблона
В случае, если фасад является единственной точкой доступа к подсистеме, он может ограничивать доступ к функциям подсистемы и лишать взаимодействие гибкости.
Реализация
Facade.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FacadePattern
{
class Facade
{
static GreetingSubsystem greet;
static AskingSubsystem ask;
static ReplySubsystem reply;
public Facade() {
greet = new GreetingSubsystem();
ask = new AskingSubsystem();
reply = new ReplySubsystem();
}
public void Greet() {
greet.HelloMaster();
}
public string AskForName() {
return ask.AskForName();
}
public void Reply(string name) {
reply.Reply(name);
}
}
}
Subsystems.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FacadePattern
{
class GreetingSubsystem
{
public void HelloMaster() {
Console.WriteLine("Hello, Master!");
}
}
class AskingSubsystem {
public string AskForName() {
Console.WriteLine("Let's know each other better! What is your name?");
return Console.ReadLine();
}
}
class ReplySubsystem {
public void Reply(string name) {
Console.WriteLine(name+"... Well, your parents know how to have fun...");
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FacadePattern
{
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Greet();
string name = facade.AskForName();
facade.Reply(name);
Console.ReadLine();
}
}
}
UML-диаграмма классов
Диаграмма последовательностей
Литература
-
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб: Питер, 2001. — 368 с.: ил. (Серия «Библиотека программиста»)