Фасад (Facade)

Шаблона Фасад позволяет скрыть сложность системы путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Шаблон Фасад строит над набором подсистем интерфейс, причём этот интерфейс может быть абсолютно любым. Допускается существование нескольких фасадов для одного набора подсистем. Клиент вместо прямой работы с подсистемами использует предложенный фасадом интерфейс.

Рис. 7. Дизайн шаблона Фасад.

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

Детали реализации шаблона Фасад не представляют трудностей. Из возможных вариантов отметим прозрачные фасады (в этом случае компоненты подсистемы могут быть доступны и через фасад, и в обход его) и статические фасады (фасад является статическим классом – скрываемые объекты не агрегируются, а создаются в методах фасада по необходимости).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: