问题的简短版本:“是否可以有一个超类,有 2 个子类,一个是实体,另一个是值对象?”
更长的版本:T 有一个Team超类。团队有Master、Helper和Code。_ 然后我有DefaultTeam,Team的子类,它是一个具有唯一 **Code****的实体,具有其域标识。然后我有 **ExecutionTeam,它是Team的一个子类,并且有一个额外的属性OriginalTeam:
public abstract class Team{
public string Code{ get; protected set; }
public Worker Master{ get; protected set; }
public IList<Worker > Helpers { get; protected set; }
...
}
public class DefaultTeam: Team
{
}
public class ExecutionTeam : Team
{
public virtual string Code { get { return OriginalTeam.Code; } }
public virtual DefaultTeam OriginalTeam { get; private set; }
...
}
ExecutionTeam是执行任务的团队。当需要执行任务时,我们选择一个DefaultTeam来执行它。但是我们可以从DefaultTeam中更改Helpers(master 永远不会更改)。
执行任务的团队是DefaultTeam ( OriginalTeam ) 的变体,但具有仅为该任务选择的助手。
ExecutionTeam将具有与 OriginalTeam 相同的代码。所以ExecutionTeam 没有唯一的身份。如果同一个DefaultTeam执行 10 次任务,则将有 10 个ExecutionTeam具有相同的代码(具有相同的OriginalTeam)。所以ExecutionTeam不能是实体。
但是让一个实体和一个值对象共享同一个超类(都是团队)有点奇怪。也许这个领域模型有问题。
需要意见。
谢谢