При проектировании как доменной модели, так и диаграмм классов у меня возникают некоторые затруднения с пониманием того, что в них включать.
Я приведу пример того, что я имею в виду:
Я делаю программу планировщика отпусков, которая имеет Administrator
и End-Users
. Administrator
делает пару вещей, таких как регистрация End-Users
в программе, изменение их привилегий и т. Д. End-User
может выбирать дни отпуска и т. Д.
Сначала я определил Administrator
и End-User
как понятия в доменной модели, а позже как классы в диаграмме классов.
На диаграмме классов оба класса получили пару методов, таких как
Administrator.RegisterNewUser();
Administrator.UnregisterUser(int id);
и т.д.
Только через некоторое время я понял, что на самом деле и Administrator
, и End-User
являются актерами, и, возможно, я совершенно неправильно понял этот дизайн. Вместо того, чтобы заполнять классы Administrator и End-User методами для выполнения того, что запрашивает мой Use-Cases, я мог бы определить другие классы из домена для их выполнения и иметь контроллеры для обработки Use-Cases (на самом деле, я решил сделать один для каждого Используйте-Case). Например, я мог бы иметь UserDatabase.RegisterNewUser()
и UserDatabase.UnregisterUser(int id);
вместо этих методов в классе Administrator
.
Идея состоит в том, чтобы попытаться представить весь планировщик отпуска как «закрытую программу», которая имеет набор функций и не беспокоится о таких вещах, как аутентификация, которая должна быть внутренней / защищенной, будучи единственные публичные вещи, которые я позволил бы увидеть внешнему миру, это его контролеры.
Это правильный подход? Или я все понял неправильно? Это вообще плохая идея, чтобы положить актеров в доменной модели / диаграммы классов? Каковы хорошие правила для этого?
Мой лектор следит за Применением UML и шаблонов , что я нахожу ужасным, поэтому я хотел бы знать, где я мог бы найти больше информации об этой описанной ситуации с актерскими моделями.
Я все еще немного озадачен всем этим, поскольку этот новый подход радикально отличается от всего, что я делал раньше.