в чем именно разница между шаблоном фасада и шаблоном сервисного слоя?
Для шаблонов фасадов вы можете найти такие определения, как: Фасад инкапсулирует сложную подсистему за простым интерфейсом. Он скрывает большую часть сложности и упрощает использование подсистемы.
Таким образом, фасадный класс инкапсулирует сложную бизнес-логику в простые в использовании методы.
Но разве шаблон сервисного уровня не делает то же самое?
Фасад – это структурный образец проектирования. Сервисный уровень — это шаблон архитектурного проектирования. Сервисный уровень служит для организации сервисов таким образом, чтобы сервисы, принадлежащие к одному и тому же уровню, совместно использовали функциональные возможности, что обеспечивает логическую группировку связанных сервисов и решение меньшего набора действий. Фасад предоставляет интерфейс, который маскирует более сложный базовый код, но не заботится о том, как организованы сервисы.
Например, представьте, что у вас есть интернет-магазин. Когда вы нажимаете кнопку «купить», это может вызвать один метод buyProducts()
, но внутри этого метода вы можете вызвать ProductAvailabilityService
, который сообщает вам, доступны ли продукты, которые вы хотите купить, PaymentService
для фактического управления оплатой и EmailNotificationService
чтобы отправить вам электронное письмо с деталями вашей покупки. Это будет фасад.
Теперь представьте, что у вас есть больница. Кроме того, у вас есть службы для получения истории болезни пациента, назначенных ему в настоящее время лекарств и т. д. Все они могут принадлежать уровню обслуживания пациентов. Принимая во внимание, что служба для врача, чтобы проверить, какие встречи у них есть, может принадлежать уровню служб доктора.
Короче говоря, один шаблон касается логической организации сервисов, а другой — упрощения использования одного или нескольких сервисов.