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

Я разрабатываю систему на C # (.NET 4.0), которая будет использоваться разными пользователями.

Каждому типу пользователей будет разрешено взаимодействовать с приложением только определенным образом. Например, пользователь A должен иметь возможность выполнять только операции 1, 2 и 3. Пользователь B должен иметь возможность выполнять только операции 2, 3 и 4. И т.д.

Я решил реализовать интерфейс под названием «Роль», который реализуется различными классами, такими как «Администратор», «Читатель» и т. д. Пользователь может иметь несколько ролей (определяемых как список «Ролей»).

Я бы хотел, чтобы у каждой роли («Администратор», «Читатель» и т. Д.) Был список разрешенных операций. Я думал определить где-нибудь перечисление, которое будет содержать все операции, возможные в приложении. Каждая «Роль» будет иметь список элементов, найденных в этом перечислении.

Я нахожу это довольно неоптимизированным, так как мне всегда нужно следить за обновлением этого перечисления по мере того, как я реализую новые функции в своем приложении.

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

5
задан SLaks 30 December 2011 в 13:20
поделиться