Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Основные характеристики шаблона Facade





Назначение Упростить работу с существующей системой, определив собственный интерфейс обращения к ней

Задача Необходимо использовать только определенное подмножество функций сложной системы или организовать взаимодействие с ней некоторым специфическим образом

Способ решения Шаблон Facade предоставляет клиентам новый интерфейс для взаимодействия с уже существующей системой

Участники Клиенту предоставляется специализированный интерфейс, упрощающий работу с системой

Следствия Применение шаблона Facade упрощает использование требуемой подсистемы, но одновременно лишает пользователя доступа ко всем функциональным возможностям системы — часть их окажется недоступной

Реализация • Определение нового класса (или классов) с требуемым интерфейсом.

• В своей работе новый класс должен опираться на функциональные возможности существующей системы (рис. 6.3)

Шаблон Facade может применяться не только для создания упрощенного интерфейса с целью вызова методов, но и для уменьшения количества объектов, с которыми клиенту приходится иметь дело. Например, предположим, что существует объект Client (клиент), которому необходимо взаимодействовать с объектами Database (база данных), Model (модель) и Element (элемент). Объект Client должен будет сначала открыть объект Database и получить доступ к объекту Model. Затем он должен будет направить объекту Model запрос на получение доступа к объекту Element. И только после этого он сможет получить от объекта Element требуемую информацию. Однако более простым решением будет создать объект Database Facade, которому любой объект Client сможет направить один запрос непосредственно на выборку информации — как показано на рис. 6.4.

Предположим, что помимо использования функций, реализованных в базовой системе, необходимо предоставить пользователям и некоторую новую функциональность. Необходимые дополнения системы могут быть реализованы за счет добавления в класс Facade новых методов, обеспечивающих требуемую функциональность. В этом случае мы по-прежнему имеем дело с шаблоном Facade, но этот шаблон будет расширен новыми функциональными возможностями.

Шаблон Facade определяет общий подход, позволяя нам целенаправленно приступить к работе. Со стороны клиента шаблон фактически создает для него новый интерфейс, которым клиент будет пользоваться вместо уже существующего стандартного интерфейса системы. Это оказывается возможным потому, что объект Client не нуждается в использовании всех функций основной системы.

Рис. 6.4. Шаблон Facade позволяет уменьшить количество объектов, видимых клиенту

Шаблон Facade также может использоваться для сокрытия или инкапсуляции базовой системы. В этом случае класс Facade включает основную систему как свой закрытый член. Поэтому основная система будет взаимодействовать только с классом Facade, оставаясь недоступной и невидимой для всех остальных пользователей.

Имеется несколько причин для инкапсуляции основной системы.

 Контроль за использованием системы. Вынуждая пользователей все обращения к системе выполнять только через класс Facade, легко можно контролировать их доступ к ней.

 Упрощение замены системы. В будущем может потребоваться заменить существующую систему новой. Представление базовой системы как закрытого члена класса Facade существенно упрощает эту процедуру. Хотя объем необходимых изменений может оказаться достаточно большим, все они будут сосредоточены только в одном месте программного кода — в классе Facade.

 







Date: 2016-07-25; view: 352; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию