ワークフロー階層のストレージ ソリューションを作成しています。
図を単純化するために、Workflow と WorkflowStep の 2 種類のオブジェクトがあります。
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) {
}
}
ワークフロー内で 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() { }
}
どちらのアプローチの長所と短所は何ですか? 両方のデザインについて述べている文献はありますか?