Хорошо, модель 'Fat' и скрипт транзакций решают проблемы проектирования, связанные с тем, где хранить бизнес-логику.Я провел некоторое исследование, и популярная мысль говорит, что использование бизнес-логики all , инкапсулированной в модель, является подходящим способом (в основном, поскольку Transaction Script может стать действительно сложным и часто приводит к дублированию кода).Однако как это работает, если я хочу использовать TDG второй Модели в моей бизнес-логике?Конечно, Transaction Script представляет собой более аккуратное, менее связанное решение, чем использование одной Модели в бизнес-логике другой?
Практический пример ...
У меня есть два класса: User & Alert.При отправке экземпляров пользователя в базу данных (например, создание новых учетных записей пользователей), существует бизнес-правило, которое требует также вставки некоторых записей предупреждений по умолчанию (например, сообщение «Добро пожаловать в систему» по умолчанию и т. Д.).Я вижу здесь два варианта:
1) Добавьте это правило в качестве метода User и создайте зависимость между User и Alert (или, по крайней мере, шлюзом табличных данных Alert).
2) Используйте скрипт транзакции, который позволяет избежать зависимости между моделями.(Кроме того, это означает, что бизнес-логика хранится в «нейтральном» классе и легко доступна для Alert. Это, вероятно, не так уж важно здесь).
Однако пользователь принимает на себя ответственность за свою собственную проверку и т. Д.но поскольку мы говорим о бизнес-правиле, включающем две модели, сценарий транзакций кажется мне лучшим выбором.Кто-нибудь замечает недостатки этого подхода?