Фасад

Facade

Назначение

Паттерн фасад (Facade) относится к структурным шаблонам проектирования и предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Он определяет интерфейс более высокого уровня, который упрощает использование подсистемы.

Решаемые задачи

  • предоставление простого интерфейса к сложной подсистеме

  • ослабление связей между компонентами системы

UML диаграмма

UML диаграмма паттерна "Фасад"

Преимущества

  • упрощение взаимодействия: предоставление простого интерфейса к сложной подсистеме

  • снижение зависимости клиентского кода от подсистемы: работа происходит с одним объектом

Недостатки

  • увеличение сложности и сопровождаемости фасада

Если подсистема имеет большое количество компонентов или сложную структуру, фасад рискует стать сложным, перегруженным объектом, что приведет к укреплению связей между компонентами вместо их ослабления.

Связь с другими паттернами

  • Абстрактная фабрика: допустимо использовать вместе с фасадом, чтобы предоставить интерфейс для создания объектов подсистем способом, не зависимым от этих подсистем. Абстрактная фабрика может выступать и как альтернатива фасаду, чтобы скрыть платформенно-зависимые классы.

  • Посредник: аналогичен фасаду в том смысле, что абстрагирует функциональность существующих классов.

  • Одиночка: обычно требуется только один фасад. Поэтому объекты фасадов часто бывают одиночками.

  • Подписчик-издатель: фасад может применять паттерн наблюдатель для уведомления клиентов о событиях, происходящих в подсистеме.

  • Компоновщик: фасад может использовать компоновщик для предоставления единого интерфейса к группе объектов внутри подсистемы.

  • Адаптер: фасад может использовать адаптеры для преобразования интерфейсов подсистемы в интерфейс, ожидаемый клиентом

Last updated

Was this helpful?