I've read that in most cases Value Objects shouldn't reference their owners.
a) I interpret this as saying that association should be unidirectional, traversable only from owner to VO?
b) Why shouldn't VOs reference their owners?
thank you
I've read that in most cases Value Objects shouldn't reference their owners.
a) I interpret this as saying that association should be unidirectional, traversable only from owner to VO?
b) Why shouldn't VOs reference their owners?
thank you
値オブジェクトがその所有者を参照するのは、SRPの違反と過度に緊密な結合を示唆しているため、コードの匂いです。定義上、値オブジェクトは、値を保持する以外はほとんど何もしないオブジェクトです。したがって、不変であり、ほとんどのロジック (ビジネス ロジック、ライフサイクル ロジックなど) がありません。
a)これは、関連付けは一方向であり、所有者からVOまでのみ移動可能である必要があると解釈していますか?
はい。
b)VOが所有者を参照するべきではないのはなぜですか?
必要ないから。値オブジェクトは単純なオブジェクトであり、VOでの潜在的な動作は、通常、それ自体またはそれ自体のクラスの別のインスタンスにのみ関連しています。
値オブジェクトは複数の所有者タイプに含まれる可能性があるため、場合によっては複数の集合体に含まれる可能性があります。
値オブジェクトの同等性は、すべてのフィールドが等しいことに基づいており、所有者フィールドが奇数であるという理由だけで、ジョンの目の緑の色がローラの目の緑の色と異なると見なされたくないためです。
とにかく、双方向の関連付けは(エンティティ内であっても)推奨されないためです。
私がこの原則に従っているのは、POJO をそれを使用するクライアントから独立して設計し、コード レベルでクライアントから切り離したいからです。そうすれば、それらは移植可能になります。