-
Notifications
You must be signed in to change notification settings - Fork 3
Facade
Pandas edited this page Jun 18, 2017
·
1 revision
Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
Используйте паттерн фасад, когда:
- Хотите предоставить простой интерфейс к сложной подсистеме.
- Между клиентами и классами реализации абстракции существует много зависимостей.
- Вы хотите разложить подсистему на отдельные слои.
- Facade - фасад: «знает», каким классам подсистемы адресовать запрос; делегирует запросы клиентов подходящим объектам внутри подсистемы;
- Классы подсистемы: реализуют функциональность подсистемы; выполняют работу, порученную объектом Facade; ничего не «знают» о существовании фасада, то есть не хранят ссылок на него.
Клиенты общаются с подсистемой, посылая запросы фасаду. Он переадресу ет их подходящим объектам внутри подсистемы. Хотя основную работу выполня ют именно объекты подсистемы, фасаду, возможно, придется преобразовать свой интерфейс в интерфейсы подсистемы. Клиенты, пользующиеся фасадом, не имеют прямого доступа к объектам под системы.
У паттерна фасад есть следующие преимущества:
- Изолирует клиентов от компонентов подсистемы, уменьшая тем самым число объектов, с которыми клиентам приходится иметь дело, и упрощая работу с подсистемой;
- Позволяет ослабить связанность между подсистемой и ее клиентами;
- Фасад не препятствует приложениям напрямую обращаться к классам подсистемы, если это необходимо.