Лабораторные работы РИСиБД (Lab6_Stepnoy)

Посмотреть архив целиком



Национальный исследовательский университет

«Московский Энергетический Институт»

Институт автоматики и вычислительной техники

Кафедра прикладной математики















Лабораторная работа №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();

}

}

}




UML-диаграммы

Диаграмма классов

Диаграмма последовательности

Литература

  • 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/






Случайные файлы

Файл
21786-1.rtf
136594.rtf
places.doc
32116.rtf
175935.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.