Информация об изменениях

Сообщение Re[3]: Фасад доменной модели - это God-объект? от 21.05.2024 7:04

Изменено 21.05.2024 8:38 Буравчик

Re[3]: Фасад доменной модели - это God-объект?
Здравствуйте, zelenprog, Вы писали:

Z>Чтобы делегировать обработчику, фасад должен знать интерфейс этого обработчика.

Z>Если учесть, что слой бизнес-логики содержит не один, а много обработчиков, то получается, что фасад должен знать интерфейсы всех этих обработчиков.
Z>Значит, Фасад будет "знать" по сути всю бизнес-логику (то есть "зависеть" от всех обработчиков).

Не саму бизнес-логику, а только правила ее вызова.

Z>Это же и есть God-object.

Z>Что-то тут не так. А как же принцип разделения ответственности?

Вопрос терминологии. Легко обосновать, что это God-object. И так же легко притащить сюда SRP. Единственная ответственность: фасад предоставлет упрощенный интерфейс к системе (заворачивает систему в черный ящик)

Ответственность разделяют, чтобы снизить сложность системы.

Задай себе вопросы:
— этот класс облегчает работу с системой со стороны клиента (вызывающего кода)?
— с этим классом трудно разобраться, чтобы его исправлять?

Если ответы "да", то это полезный класс.
Re[3]: Фасад доменной модели - это God-объект?
Здравствуйте, zelenprog, Вы писали:

Z>Чтобы делегировать обработчику, фасад должен знать интерфейс этого обработчика.

Z>Если учесть, что слой бизнес-логики содержит не один, а много обработчиков, то получается, что фасад должен знать интерфейсы всех этих обработчиков.
Z>Значит, Фасад будет "знать" по сути всю бизнес-логику (то есть "зависеть" от всех обработчиков).

Не саму бизнес-логику, а только правила ее вызова.

Z>Это же и есть God-object.

Z>Что-то тут не так. А как же принцип разделения ответственности?

Вопрос терминологии. Легко обосновать, что это God-object. И так же легко притащить сюда SRP. Единственная ответственность: фасад предоставлет упрощенный интерфейс к системе (заворачивает систему в черный ящик)

Ответственность разделяют, чтобы снизить сложность системы.

Задай себе вопросы:
— этот класс облегчает работу с системой со стороны клиента (вызывающего кода)?
— с этим классом легко разобраться, чтобы его исправлять?

Если ответы "да", то это полезный класс.