Фасад Facade – это один из самых используемых структурных шаблонов проектирования. С его помощью можно реализовать единый простой интерфейс для взаимодействия со сложной системой или группой систем.
Например, нужно реализовать процесс размещения сделки на фондовом рынке. У поставщика котировок берётся текущая рыночная цена инструмента (Quote), затем размещается рыночная заявка (Order) и в процессе торговли по факту размещённой заявки на бирже регистрируется сделка (Deal). Я специально набросал процесс очень схематично. На самом деле он гораздо сложнее. Но даже в упрощённом варианте нужно выполнить как минимум три действия. Попробуем реализовать их через Facade.
Класс Quote реализует поставку котировок
В классе Order содержится логика, необходимая для размещения рыночной заявки
И, наконец, класс Deal минимально отображает процесс размещения сделки на фондовом рынке.
Даже в таком минимальном исполнении система уже выглядит достаточно сложной. Поэтому попробую все необходимые действия оформить через фасад Facade.
Ниже предоставлен простейший код для проверки работы фасада (он выступает в роли клиентского приложения).
Всё множество и многообразие манипуляций с рыночной заявкой теперь вложено в один простой метод.