Как лучше всего создать одно приложение с различной логикой в ​​зависимости от роли пользователя? - PullRequest
0 голосов
/ 23 марта 2019

Допустим, у нас есть две роли пользователя:

  1. Reader
  2. Писатель

Теперь мне нужно разрешить пользователям создавать посты с ролью writer. Reader Роль может только читать и помечать как прочитанную. Они имеют одинаковую точку входа с почти одинаковой логикой. Но как я могу дифференцировать логику в зависимости от роли пользователя?

Я думаю, что создание еще одного действия приведет к дублированию кода. Но также использование if/else усложнит

Каков наилучший способ обработки разных ролей пользователей в одном приложении?

1 Ответ

2 голосов
/ 23 марта 2019

На мой взгляд, я бы предложил сделать еще одно занятие.

Использование логики if / else повсеместно делает ваш код более запутанным и сложным. Это также делает ваш код более трудоемким и трудным для внесения изменений в будущем, например ... если вам вдруг пришлось ввести новую роль, такую ​​как «Редактор». Было бы глупо пройти через весь ваш код и изменить логику if / else для всех задействованных методов, чтобы включить новую роль.

Лучше просто создать новую активность. Однако это не означает, что будет дублирование кода. Имейте в виду, что «Writer» и «Reader» на самом деле разделяют много кода.

Я не знаю специфики для вас, но я предполагаю, что «Writer» обладает всеми возможностями «Reader», но более того.

Таким образом, вы можете создать Activity для 'Reader', затем расширить эту Activity для 'Writer' и включить только специфический код 'Writer' в эту WriterActivity.

Или вы всегда можете создать базовое действие только с общими функциями «Writer» и «Reader», а затем создать ReaderActivity или WriterActivity, которое распространяется на эту базу.

По сути, я предлагаю использовать другое действие, и вас не должно беспокоить наличие дополнительного действия, приводящего к дублированию кода. Это происходит главным образом потому, что одной из причин концепции наследования в Java является предотвращение дублирования кода и уменьшение избыточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...