我有一个设计,我希望能够将一个或多个命令对象分配给实体,然后将这些命令用作其工作流程的一部分。为了参数的缘故,可以为用户的帐户分配附加功能。
我理解Command模式以及它是如何适合的,但我的问题是持久性。如果我有一个命令列表,其中每个用户帐户可以有自己的命令列表,让我们假设参数的唯一重要事项是它的系统类型,和/或它们都具有相同的属性。在实施我的数据层时,最好的方法是什么?
我正在考虑将其作为帐户表和命令/功能表之间的多对多关系,其中后一个表遵循TPH策略(即所有命令都保留在同一个表中)。这似乎是最干净的方式,但我想看看是否有其他人遵循不同的策略?
您是否将其设为1:多关系,其中添加了相同功能的任何两个帐户都具有该功能的不同实例?还是有一种我根本没想过的更好的方式?
答案 0 :(得分:1)
TPH多对多看起来对我很好。
虽然我不知道您的设计决定是否将命令附加到不同的用户,但您似乎正在尝试使用它们进行授权权限目的,而不是使用基于角色的安全性或ACL实现正常的授权系统。如果是这样,那么我可能会在内部级别使用基于角色的安全性,并根据内部安全性动态创建UI命令,而不是静态存储在数据库中。