Pattern Facade - Nero-ro/Facade GitHub Wiki

Паттерн "Фасад"

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

Рассмотрим официальное определение паттерна:

Паттерн Фасад предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высоко- уровневый интерфейс, упрощающий работу с подсистемой.

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

Это хорошо можно рассмотреть из диаграммы классов паттерна:

Ключевые моменты Паттерна "Фасад":

  • Если вам понадобится упростить большой интерфейс или семейство сложных интерфейсов — используйте фасад.
  • Фасад изолирует клиента от сложной подсистемы.
  • Реализация фасада основана на композиции и делегировании.
  • Для подсистемы можно реализовать несколько фасадов.

Ссылки на классы паттерна Фасад


HomeTheaterFacade

Amplifer

CdPlayer

DvdPlayer

PopcornPopper

Projector

Screen

TheaterLights

Tuner