我正在为工作流层次结构编写存储解决方案。
为了简化图片,我有 2 种类型的对象,一个 Workflow 和一个 WorkflowStep。
尽管 WorkflowStep 分层地位于 Workflow 之下,但 Workflow 不会聚合 WorkflowStep,因为我们将这些对象视为数据容器。
所以这给我留下了以下课程:
public class Workflow : Node {
public string UID;
public string parentID;
}
public class WorkflowStep : Node {
public string UID;
public string parentID;
}
public class WorkflowEngine {
public void Store(Workflow wf) {
}
public void Store(WorkflowStep wfs) {
}
}
不在 Workflow 中聚合 WorkflowStep 的原因(即使在逻辑上适合)是这些对象纯粹被视为数据容器,它们以后可能会发生变化,我们希望保持这些对象的存储与对象本身分离。
当然,另一种选择是做这样的事情:
public class Workflow : Node {
public List<WorkflowStep> steps;
public string UID;
public string parentUID;
public void Store() { }
}
public class WorkflowStep : Node {
public string UID;
public string parentID;
public void Store() { }
}
两种方法的优缺点是什么?有没有关于这两种设计的文献?