Здравствуйте, zelenprog, Вы писали:
Z>Чтобы делегировать обработчику, фасад должен знать интерфейс этого обработчика. Z>Если учесть, что слой бизнес-логики содержит не один, а много обработчиков, то получается, что фасад должен знать интерфейсы всех этих обработчиков. Z>Значит, Фасад будет "знать" по сути всю бизнес-логику (то есть "зависеть" от всех обработчиков).
Не саму бизнес-логику, а только правила ее вызова.
Z>Это же и есть God-object. Z>Что-то тут не так. А как же принцип разделения ответственности?
Вопрос терминологии. Легко обосновать, что это God-object. И так же легко притащить сюда SRP. Единственная ответственность: фасад предоставлет упрощенный интерфейс к системе (заворачивает систему в черный ящик)
Ответственность разделяют, чтобы снизить сложность системы.
Задай себе вопросы:
— этот класс облегчает работу с системой со стороны клиента (вызывающего кода)?
— с этим классом легко разобраться, чтобы его исправлять?