Фасад (Facade)

Метафора

 

Представьте себе автомобиль. Для того чтобы им управлять, Вам вовсе не нужно знать устройство двигателя внутреннего сгорания и всех систем внутри него. Для этого достаточно уметь пользоваться его «Фасадом», интерфейсом с которым непосредственно взаимодействует водитель: руль, педали, коробка передач.

 

Назначение

 

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

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

 

Диаграмма

 

Фасад

Фасад

 

Client использует Facade для доступа к классам подсистемы.

 

Пример

 

В качестве примера можно привести SALV модель, где для того чтобы получить доступ к подсистеме построения отчёта на базе ALV мы обращаемся к основному классу cl_salv_table, который уже внутри себя скрывает целую подсистему.