Шаблон "Фасад" (Facade)

max аватар
130

Фасад - означает лицо здания. Люди, прогуливающиеся возле здания, могут видеть лишь лицо здания. Они не знают ничего о нем. Ни о канализациях, ни о кабелях, ни о других устройствах. Лицо прячет все устройство и отображает лишь дружелюбное лицо.

Таким же образом и используется шаблон фасад. Он прячет все устройство системы и предоставляет клиенту интерфейс, откуда уже клиент может доступаться к системе. В Java, интерфейс JDBC может быть назван фасадом. Мы, пользователи или клиенты, создаем подключение с использованием интерфейса "java.sql.Connection", реализацию которого невозможно установить. Реализация лежит на ответственности производителя драйвера.

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

Посмотрим, как работает пример с магазином.

Store.java

Магазин легко может быть интерфейсом. Он лишь возвращает товар. Товар может быть трех типов, как мы и договаривались ранее - RawMaterialGoods, FinishedGoods, PackagingMaterialsGoods. Все эти классы реализуют интерфейс Goods.

Точно также, магазины могут быть трех типов и могут реализовывать интерфейс Store. Посмотрим на код одного из примеров:

FinishedGoodsStore.java:

Теперь представим хозяина фасада.

Понятно, что комплексная реализация производится самим StoreKeeper. Клиент лишь доступается к нему и запрашивает товар.

Как клиентская программа будет доступаться к фасаду? Вот пример:

Client.java:

В таком случае реализация остается за фасадом. Клиенту дается лишь интерфейс, который прячет всю реализацию.


Конец
Леонардо да Винчи склоняется к тому, что любое препятствие преодолевает настойчивость.

Очень доступное изложение :) большое спасибо за материал

Вот это да.

Очень толково и доходчиво.

 

Спасибо автору за статью.

Очеть просто и доходчиво!

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке