Я ищу некоторые рекомендации относительно того, когда нужно явно моделировать роль в модели предметной области.
Я объясню свою текущую позицию с помощью примера здесь.
Допустим, мы строим систему здравоохранения, а бизнес-требование гласит
«Оперировать могут только врачи со стажем от 3 лет и определенной квалификацией»
В этом случае очевидно, что действие по проведению операции может быть выполнено только лицом, играющим роль врача, и врач должен выполнить определенные предпосылки для выполнения действия.
docter.performSurgery()
По сути, все врачи разные
Этот метод, вероятно, проверит, выполнены ли предварительные условия
Поэтому в приведенных выше случаях я буду моделировать роль явно.
Теперь давайте рассмотрим альтернативный сценарий.
Только администратор может одобрить перевод средств
В приведенном выше случае я не считаю необходимым моделировать эту роль в домене, поскольку в моем домене нет правил, отличающих одного администратора от другого.
Это действие может выполнить любой человек/логин с разрешением администратора, я бы предпочел внедрить это в свою инфраструктуру безопасности и убедиться, что
approveTransfer()
, вызываемый на уровне приложения, вызывается только в том случае, если текущий вошедший в систему пользователь имеет разрешение ADMIN.
Таким образом, "модель предметной области", под которой я подразумеваю такие классы, как класс Account, не знает об этом правиле, это кодифицировано на прикладном уровне либо через AOP, либо, возможно, через класс AccountService или тому подобное.
Что говорят об этом мудрецы? :)
doctor.scheduleSurgery(date)
? Судя по вашему сообщению и функции PerformSurgery, система выполняет резку! - person morleyc   schedule 19.10.2014