ПКРПСиБД LAB6 Степная Е.В. (Лабораторная работа 6)
Описание файла
Файл "ПКРПСиБД LAB6 Степная Е.В." внутри архива находится в папке "Лабораторная работа 6". Документ из архива "Лабораторная работа 6", который расположен в категории "". Всё это находится в предмете "распределённые ис и базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "распределённые ис и базы данных" в общих файлах.
Онлайн просмотр документа "ПКРПСиБД LAB6 Степная Е.В."
Текст из документа "ПКРПСиБД LAB6 Степная Е.В."
Национальный исследовательский университет
«Московский Энергетический Институт»
Институт автоматики и вычислительной техники
Кафедра прикладной математики
Лабораторная работа №6
По дисциплине «Проектирование крупных программных систем и баз данных»
На тему «Реализация одного из структурных шаблонов проектирования»
Выполнила студентка
Группы А-13-08
Степная Е.В.
Проверил
Куриленко И.Е.
Москва, 2012
Адаптер
Категория – структурный шаблон.
Описание
Адаптер - структурный шаблон проектирования, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс.
По схеме, используемой для работы с адаптируемым объектом, выделяют два варианта:
• Адаптер объекта – использует композицию, т.е. содержит экземпляр адап-тируемого объекта.
• Адаптер класса – использует наследование от адаптируемого объекта для получения его функциональности.
Уместность применения
Шаблон следует применять, если
-
существующий объект, называемый адаптируемым, предоставляет необходимые функции, но не поддерживает нужного интерфейса;
-
(или) неизвестно заранее, с каким интерфейсами придется работать адаптируемому объекту;
-
(или) формат входных или выходных данных метода не совпадает с требуемым.
Преимущества, достигаемые при применении шаблона
-
инкапсуляция реализации внешних классов (компонентов, библиотек), система становится независимой от интерфейса внешних классов;
-
переход на использование других внешних классов не требует переделки самой системы, достаточно реализовать один класс Adapter.
Недостатки шаблона
-
Задача преобразования интерфейсов может оказаться непростой в случае, если клиентские вызовы и (или) передаваемые параметры не имеют функционального соответствия в адаптируемом объекте.
Детали реализации
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab6
{
class Program
{
// "Adaptee"
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("Действия класса Adaptee");
}
}
//"Target"
class Target
{
public virtual void Request()
{
Console.WriteLine("Действия класса Target");
}
}
// "Adapter"
class Adapter : Target
{
private Adaptee adaptee = new Adaptee();
public override void Request()
{
// Possibly do some other work
// and then call SpecificRequest
adaptee.SpecificRequest();
}
}
static void Main(string[] args)
{
// Create adapter and place a request
Target target = new Adapter();
target.Request();
Console.Read();
}
}
}
Диаграмма классов
Диаграмма последовательности
Литература
-
http://ru.wikipedia.org/wiki/%D0%90%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
-
http://andrey.moveax.ru/patterns/oop/structural/adapter/