Фасад (Facade)¶
Facade дает простой внешний вход к сложной подсистеме.
Опора на ООП¶
Facade опирается прежде всего на инкапсуляцию: сложная координация нескольких модулей и объектов прячется за компактным внешним API.
Что показывает пример на 1С¶
CommonModules.SalesOrderFacadeсобирает в одной точке создание документа, заполнение, контроль остатков и проведение.- Клиентский код вызывает один понятный метод вместо серии обращений к разным подсистемам.
- При этом фасад не отменяет внутренние сервисы, а только упрощает типовой сценарий работы с ними.
Пример¶
Function CreateAndPost(Partner, Items) Export
SalesOrder = Documents.SalesOrder.CreateDocument();
SalesOrderFilling.FillHeader(SalesOrder, Partner);
SalesOrderFilling.FillItems(SalesOrder, Items);
StockControl.CheckAvailability(SalesOrder);
SalesOrder.Write(DocumentWriteMode.Posting);
Return SalesOrder;
EndFunction
Где полезен в 1С¶
- для типовых сценариев работы с документами, обменами и расчетами;
- когда внутренняя подсистема состоит из нескольких сервисов и объектов;
- когда внешнему коду нужен короткий и устойчивый API.
Когда паттерн лишний¶
- если фасад просто переименовывает один вызов;
- если под фасадом начинает скапливаться вся бизнес-логика системы;
- если разным клиентам нужны слишком разные сценарии и один вход их только запутывает.