169 похожих чатов

Или логику аутентификации нельзя объединять в класс пользователя. Хорошо. А

что тогда можно?
Добавление ролей?
await user.AddRole(role);
await user.AddRoles(role1, role2, role3);
-> user.Roles => [role, role1, role2, role3]
Ну, терпимо... Типа, можно одному пользователю сразу несколько ролей назначить.
Теперь аналогичное, но наоборот. В одну роль несколько пользователей. Хм...

await role.AddUsers(user1, user2, user3);
-> role.Users => [user1, user2. user3]
и, при этому
-> user1.Roles => [role]

Блин, чересчур сильная связность. Любое изменение role в одном месте (название поменяли), ведёт к необходимости отследить все активные экземпляры User и поменять в коллекции ролей ту, которая изменилась. И это только в случае, если участвуют два связанных между собой класса - User и Role. В enterprise всякие сущности имеют немного сильно больше связей между собой.

Ладно, через свойства нельзя. Можно, но видим, что есть проблемы. Давайте через методы.

await user.GetRoles() => [role]
await role.GetUsers() => [user1, user2, user3]

Ну так вроде уже что-то. Но, опять, это только для случая двух связанных классов. Добавим немного ещё.

await company.GetUsers() => [user1, user2, user3]
await department1.GetUsers() => [user2, user3]
await department2.GetUsers() => [user1, user3]
await document1.GetAuthors() => [user3]

1 ответов

10 просмотров

2. мы можем добавить и роль пользователю, и пользователей в роль, здесь возможны оба варианта, НО для избежания сильной связности стоит правильно формировать связи между сущностями, у тебя пользователь и роль это две отдельные сущности, достаточно в пользователе хранить список айдишников ролей и это всё из ролей что потребуется трекать в пользователе 3. пример с компаниями и департаментами вполне себе валидный, хочешь получить пользователей, добавляй соответствующий метод, или обобщай это всё отдельный класс/интерфейс

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта