最近、特定のドメイン モデルを設計しようとしたときに過去に抱えていたいくつかの問題について考えていました。たとえば、特定のコンテキストでは編集可能であるが、別のコンテキストでは編集できないアドレスとしましょう。私の現在の考え方では、アドレスの値オブジェクト バージョンとアドレスのエンティティの両方を、おそらく顧客アカウントのようなものに関連付けて、それを識別できるようにするというものです。
ユーザーがアドレスを入力したときなど、新しいアドレスを作成する場合、そのアドレスを引き続き編集し、おそらく既存のアドレスも編集できるようにする必要があることに気付きました。同じ境界コンテキスト内。このため、このコンテキスト内では、Address は値オブジェクトではなくエンティティとしてモデル化する必要があると想定できます。これは、既存のデータセットを変更したり、新しいデータを作成したりするときに常にエンティティを使用する必要がある場合、値オブジェクトを作成するためのファクトリを持つことは理にかなっているという私の主な質問につながりますか?
私がこの考え方に従っているときに浮かび上がってきたルールは、値オブジェクトは、アプリケーションに対して静的なもの、またはデータベースに既に永続化されているものを表すためにのみ作成されるべきであり、一時的なものではないということです。現在のドメイン コンテキスト内。したがって、あらゆるタイプの値オブジェクトを作成する必要がある唯一の場所は、永続値の集約ルートリポジトリ内またはその代わりに、または静的値の場合はサービス内で再水和/実体化される場合です。これは私にはかなり明確に見え始めていますが、誰かが同じ結論を導き出している場所を他に読んだことがないことが懸念されます. いずれにせよ、誰かが私の結論を確認するか、正してくれることを願っています。