私はこれについて非常に強い疑念を抱いています。それを見直して、何が間違っていると言うことができますか?
あなたの図は、いくつかのエンティティを共有していると思われる複数の集約ルーツがあるという点で、非常に疑わしいです。これは、あなたがまだ集計境界の意味を理解していないことを示唆しています。
集約を正しく定義する重要な点は、モデルの状態をどのように変更できるかを理解することです。各集約は、境界内で発生する状態の変化に対して単独で責任を負います。集合体の外部にある論理は、集合体のルート実体を介してその状態にアクセスすることだけが許可される。
ウェイポイント集約と出発集計が両方とも責任を負うことを示唆している図は、ステーションが何か変わっていると示唆しています。
エンティティが集合体に属しているかどうかを判断しようとしている場合、もう1つの素早いヒューリスティックがあります。エンティティのライフサイクルは、その集合体のライフサイクル全体に収まるのでしょうか?そうでない場合、エンティティはその集合体の一部であってはならず、モデルを変更する必要があります。
この特定の例では、私はStations
がかなりのビットでWaypoints
よりも長くなることを期待しています。これは、Stationへの変更は単一のWaypointの責任ではないことを強く意味します。
DDDの戦術的パターンは、実際にはオブジェクト指向開発のためのコード化されたプラクティスです。カプセル化と結束に注意を集中すると、境界がより明確になります。
Schedule-Routeの関係について何をお勧めしますか? Routeを集計ルートにする必要があるので、スケジュールでそれを参照できますか?異なるたくさんのことを意味することができます
参考...私たちはスケジュールデータとルートデータを組み合わせてレポートを作成できるように
あなたは、スケジュールの状態でのルートエンティティの識別子を含むことができますか?絶対に。
スケジュールを介してルートエンティティの状態を変更することはできますか? Routeのすべての変更は、Line集約によって検証する必要があります。
ルートエンティティの状態を使用して、スケジュールの変更を検証できますか?いいえ。ルートの状態は別の集計になっています。 Line集合体は、それを読み取ろうとしている間にそれを変更している可能性があります。
Routeエンティティの近似を使用して、スケジュールの変更を検証できますか?確かに - 通常の仕組みはドメインサービスをスケジュールに渡して、ルートの古いコピーを照会できるようにすることです。いくつかのデータ一貫性エラー(偽陽性と偽陰性の両方)がありますが、ドメインが特に変動しない場合、おそらくビジネスにとって大きな問題ではありません。
まあ、stackoverflowは特定の問題を解決するためのものです。プロジェクトやデザイン全体をレビューするのではありません。あなたは最終的に、人々があなたのデザインについて意見を述べるように求めています。それはいつも...よく、意見に基づいている。 – GhostCat
私はデザインを見直すのではなく、ドメインオブジェクトの識別に役立つように頼んでいます。私はデザインで何かを変えるつもりはない。さらに、私は自分のコードを投稿してヘルプ/レビューを求めるときに、状況と同じものを特定するための私の "解決策"を提供しました。そして、それはstackoverflowのルールに従ってOKです。 – ovnia
さらに、ドメインオブジェクトの識別には成熟した定義があるため、ドメインオブジェクトの特定は意見ベースではありません。問題は、私がそれらを正しく理解しているかわからないことです。だから私は私の質問にここにいる。 – ovnia