ПКРПСиБД LAB6 Бочаров И.А. (548496)
Текст из файла
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №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 с.: ил. (Серия «Библиотека программиста»)
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.