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

Фасад - означает лицо здания. Люди, прогуливающиеся возле здания, могут видеть лишь лицо здания. Они не знают ничего о нем. Ни о канализациях, ни о кабелях, ни о других устройствах. Лицо прячет все устройство и отображает лишь дружелюбное лицо.
Таким же образом и используется шаблон фасад. Он прячет все устройство системы и предоставляет клиенту интерфейс, откуда уже клиент может доступаться к системе. В Java, интерфейс JDBC может быть назван фасадом. Мы, пользователи или клиенты, создаем подключение с использованием интерфейса "java.sql.Connection", реализацию которого невозможно установить. Реализация лежит на ответственности производителя драйвера.
Попробуем понять фасад на примере. Представим себе магазин. Вы всего лишь имеете доступ к хозяину магазина, который очень хорошо знает устройство своего магазина. Независимо от того, что Вам нужно, вы обращаетесь к хозяину и он уже смотрит есть ли товар в наличии и приносит его вам. В данном случае, хозяин действует в роли фасада, поскольку он прячет устройство и структуру магазина.
Посмотрим, как работает пример с магазином.
Store.java:
Магазин легко может быть интерфейсом. Он лишь возвращает товар. Товар может быть трех типов, как мы и договаривались ранее - RawMaterialGoods, FinishedGoods, PackagingMaterialsGoods. Все эти классы реализуют интерфейс Goods.
Точно также, магазины могут быть трех типов и могут реализовывать интерфейс Store. Посмотрим на код одного из примеров:
FinishedGoodsStore.java:
Теперь представим хозяина фасада.
Понятно, что комплексная реализация производится самим StoreKeeper. Клиент лишь доступается к нему и запрашивает товар.
Как клиентская программа будет доступаться к фасаду? Вот пример:
Client.java:
В таком случае реализация остается за фасадом. Клиенту дается лишь интерфейс, который прячет всю реализацию.







Очень доступное изложение :) большое спасибо за материал
Вот это да.
Очень толково и доходчиво.
Спасибо автору за статью.
Очеть просто и доходчиво!
Отправить комментарий