2

Contact、TelephoneNumber、および ContactRepository という単純なドメイン モデルがあります。連絡先はエンティティであり、ID フィールドがあります。TelephoneNumber は典型的な値オブジェクトです。ID がなく、Contact インスタンスとは別に読み込むことができませんでした。

反対側からは、連絡先を操作するための Web アプリケーションがあります。最初のページは「ContactList」、次のページは「Contact/C0001」で、連絡先の詳細と電話番号のリストが表示されます。

電話番号編集フォームを実装する必要があります。最初に考えられる近似は、「ThelephoneNumber/T0001」のようにナビゲートできるページを追加することです。

しかし、ThelephoneNumber は Value Object クラスであり、そのインスタンスはこの方法では識別できませんでした。

この問題を解決するためのベスト プラクティスは何ですか? ステートレス アプリケーションで識別不可能なオブジェクトを識別するにはどうすればよいでしょうか?

4

4 に答える 4

2

値オブジェクトの状態は、その特定のインスタンスを識別しますか? そうでない場合は、編集フォームが送信されたときに古い値と新しい値を返すだけで、古い状態のオブジェクトを新しい状態に更新できます。

Contact/C0001/ThelephoneNumber のようなページを用意し、連絡先 ID と値オブジェクト クラスの両方を使用して、変更するインスタンスを識別します。

あなたが求めていることを完全に誤解していない限り。

于 2008-09-16T13:41:25.880 に答える
0

私なら、TelephoneNumber に一連の数字だけを含め (複数形にすることもできます)、次のように参照します: Contact/C0001/TelephoneNumber(s)

于 2008-09-16T13:41:40.500 に答える
0

実際には、設計上厳密に必要でなくても、電話番号に ID を与える方が簡単だといつも思っています。

連絡先のコンテキスト外に存在できない厳密な値のオブジェクトである場合、それは、優れたユーザー インターフェイスでは、独自のページではなく連絡先ページ内で電話番号を編集する必要があることを示しています。

ただし、これら 2 つのアプローチのいずれかに反対する場合は、Marc Gear のソリューションが優れていると思います。

于 2008-09-16T13:45:40.240 に答える
0

多くの人があなたに信じてほしいと思っていることにもかかわらず、あなたは 100% 純粋ではありません。

値オブジェクトには、ある種の Identity フィールドが必要です。電話番号のようにオブジェクトに固有のものである場合もあれば、TelephoneNumber.Id のように人為的なものである必要がある場合もあります。

これを受け入れるのが早ければ早いほど、あなたにとって良いことです:-)

于 2008-09-16T14:42:25.860 に答える