Детали реализации шаблона команды DDD — сохраняющиеся команды

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

Я понимаю шаблон Command и то, как он подходит, но мой вопрос касается настойчивости. Если у меня есть список команд, где каждая учетная запись пользователя может иметь свой собственный список команд, и давайте для аргумента предположим, что единственной важной вещью в команде является ее тип системы, и/или все они имеют одинаковые свойства. Как лучше всего сохранить это, когда придет время реализовать мой уровень данных?

Я рассматривал это как отношение «многие ко многим» между таблицей учетных записей и таблицей команд/функций, где последняя таблица следует стратегии TPH (т. е. все команды сохраняются в одной таблице). Кажется, это самый чистый способ сделать это, но я хотел посмотреть, следует ли кто-нибудь другой другой стратегии?

Вы вместо этого делаете это отношение 1: много, где любые две учетные записи, которые имеют одну и ту же добавленную функцию, имеют разные экземпляры этой функции? Или есть лучший способ, о котором я вообще не думаю?


person Paul    schedule 05.03.2011    source источник


Ответы (1)


Мне кажется, что многие ко многим с TPH подходят.

Хотя мне интересно ваше дизайнерское решение прикрепить команды к разным пользователям, похоже, вы пытаетесь использовать их для авторизации | разрешений вместо внедрения обычной системы авторизации с использованием безопасности на основе ролей или ACL. Если это так, то я бы, вероятно, использовал безопасность на основе ролей на внутреннем уровне и для команд пользовательского интерфейса, которые создаются динамически на основе внутренней безопасности, а не статически хранятся в БД.

person Alex Burtsev    schedule 06.03.2011
comment
Спасибо, нет, это не безопасность, это обработка; мой пример не был точным использованием для проекта, просто самым близким, о котором я мог думать. - person Paul; 06.03.2011