ドメイン駆動設計 (DDD) では、ValueObject には次の定義があります。
値オブジェクトは、何らかの特性または属性を説明するオブジェクトですが、アイデンティティの概念はありません。
「Client」エンティティと「Order」エンティティがあるとします。注文はクライアントに関連しているため、通常は Order クラスに ClientId フィールドを追加します。これは、Client エンティティ自体を参照できない可能性があるためです。ここまでは順調ですね...
ここで、クライアントの名前、クライアントのステータスだけでなく、 ClientId も含む値オブジェクト ClientInfo を作成してもよろしいでしょうか? ClientInfo は、clientName、clientStatus、および clientId のゲッターのみで不変になります。
これで、エンティティ識別子を持つ値オブジェクトができました。これは値オブジェクトの定義に反していますか、それともここで安全ですか?