Паттерн фасад

Паттерн фасад (также пишется как façade) - это паттерн программного проектирования, обычно используемый в объектно-ориентированном программировании. Аналогично фасаду в архитектуре, фасад - это объект, который служит интерфейсом на передней панели, маскируя более сложный базовый или структурный код. Фасад может:

  • улучшить удобочитаемость и удобство использования библиотеки программного обеспечения, маскируя взаимодействие с более сложными компонентами за одним (и часто упрощенным) API
  • обеспечить контекстно-специфический интерфейс для более общей функциональности (в комплекте с контекстно-зависимой проверкой входных данных)
  • служить отправной точкой для более широкого рефакторинга монолитных или тесно связанных систем в пользу более слабосвязанного кода

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

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

Какие проблемы может решить паттерн проектирования фасад?

  • Чтобы упростить использование сложной подсистемы, необходимо предоставить простой интерфейс для набора интерфейсов в подсистеме.
  • Зависимости от подсистемы должны быть минимизированы.

Клиенты, которые обращаются к сложной подсистеме, напрямую ссылаются (зависят от) на множество различных объектов, имеющих разные интерфейсы (тесная связь), что затрудняет реализацию, изменение, тестирование и повторное использование клиентов.

Какое решение описывает паттерн проектирования фасад?

Определите объект фасад, который

  • реализует простой интерфейс с точки зрения (делегируя) интерфейсов в подсистеме и
  • может выполнять дополнительные функции до/после пересылки запроса.

Это позволяет работать через объект фасад, чтобы минимизировать зависимости от подсистемы.


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Хэш-таблица: разрешение коллизий

Нормальные формы, пример нормализации в базе данных