Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Основные характеристики шаблона Adapter
Назначение Организовать использование функций объекта, недоступного для модификации, через специально созданный интерфейс Задача Система поддерживает требуемые данные и поведение, но имеет неподходящий интерфейс. Чаще всего шаблон Adapter применяется, если необходимо создать класс, производный от вновь определяемого или уже существующего абстрактного класса Способ решения Шаблон Adapter предусматривает создание класса-оболочки с требуемым интерфейсом Участники Класс Adapter приводит интерфейс класса Adaptee в соответствие с интерфейсом класса Target (от которого класс Adapter является производным). Это позволяет объекту Client использовать объект Adaptee так, словно он является экземпляром класса Target (рис. 7.6) Следствия Шаблон Adapter позволяет включать уже существующие объекты в новые объектные структуры, независимо от различий в их интерфейсах Реализация Включение уже существующего класса в другой класс. Интерфейс включающего класса приводится в соответствие с новыми требованиями, а вызовы его методов преобразуются в вызовы методов включенного класса Часто встречаются ситуации, подобные описанной выше, но при этом повторно используемый объект не обладает всей требуемой функциональностью. В этом случае также можно применить шаблон Adapter, хотя это и не позволит сразу получить готовое решение. Правильный подход в подобной ситуации может быть таким. • Функции, реализованные в уже существующем классе, просто адаптируются по описанной выше схеме. • Отсутствующие функции реализуются заново — непосредственно в объекте-оболочке. Это менее эффективное решение, но оно все же позволяет избежать реализации всей требуемой функциональности. Шаблон Adapter удобен, если применяется сразу несколько шаблонов, поскольку многие шаблоны требуют, чтобы используемые в них классы были порождены от одного и того же класса. Если в проект предстоит включить уже существующие классы, шаблон Adapter может использоваться для адаптации их к требуемому абстрактному классу. Фактически существует два типа шаблонов Adapter. 1. Объектный шаблон Adapter. Тот вариант шаблона Adapter, который мы обсуждали выше, называют объектным шаблоном Adapter, поскольку он реализуется посредством помещения одного объекта (адаптируемого) в другой (адаптирующий). Второй вариант реализации шаблона Adapter использует механизм множественного наследования и получил название 2. классового шаблона Adapter. Выбор варианта шаблона Adapter зависит от специфики проблемной области. На концептуальном уровне различия можно игнорировать, однако на этапе реализации проекта потребуется принять во внимание некоторые дополнительные аспекты. Шаблоны Facade и Adapter действительно кажутся похожими. В каждом из них используются классы-оболочки, но это оболочки разного типа. Очень важно четко понимать то довольно тонкое различие, которое существует между ними. В этом нам поможет сравнение свойств обоих шаблонов (табл. 7.1).
Из сведений, приведенных в табл. 7.1, можно сделать следующие выводы. • Как шаблон Facade, так и шаблон Adapter используют уже существующие классы. • Однако для шаблона Facade необходимо самостоятельно разработать требуемый интерфейс, а не использовать уже существующий, как для шаблона Adapter. • Реализация шаблона Facade не предусматривает поддержки полиморфизма, тогда как при применении шаблона Adapter это может оказаться необходимым. • При использовании шаблона Facade наша цель — упростить существующий интерфейс. А для шаблона Adapter нам требуется поддержка уже существующего интерфейса и не допускаются никакие упрощения, даже если они вполне возможны. Иногда слушатели приходят к заключению, что различие между шаблоном Facade и шаблоном Adapter состоит в том, что шаблон Facade скрывает множество классов, а шаблон Adapter — только один. Хотя довольно часто это замечание оказывается справедливым, возможны и противоположные ситуации. Например, шаблон Facade может применяться для работы с одним, но очень сложным объектом, в то время как шаблон Adapter может предоставлять оболочку для нескольких мелких объектов с целью объединения той функциональности, которая в них реализована. Выводы. Шаблон Facade предназначен для упрощения интерфейса, тогда как шаблон Adapter предназначен для приведения различных существующих интерфейсов к единому требуемому виду.
Вопрос №25. Шаблон проектирования Bridge.
Паттерн Bridge Date: 2016-07-25; view: 358; Нарушение авторских прав |