エンティティの識別子として値オブジェクトを使用します
-
27-10-2019 - |
質問
サンプルDDDプロジェクトでEvansのプロジェクトを表示している間、 Cargo
エンティティ、EvansはValueオブジェクトであるTrackNumberを使用します。なぜ彼が平野を選択しなかったのか string tracknumber
代わりに、アイデンティティのバリューオブジェクトを選択しますか?これがエヴァンスのスニペットです:
public class Cargo implements Entity<Cargo> {
private TrackingId trackingId
}
public final class TrackingId implements ValueObject<TrackingId> {
private String id;
/**
* Constructor.
*
* @param id Id string.
*/
public TrackingId(final String id) {
Validate.notNull(id);
this.id = id;
}
解決
達成するいくつかのこと:
- 追跡IDがnullであってはならないというロジックをカプセル化します
- 追跡IDが設定された後に変更されないというロジックをカプセル化します。
単純な文字列を使用すると、貨物オブジェクトはこれらのルールを認識する必要があります。値オブジェクトアプローチを使用すると、TrackingIDがこれらのルールを維持することを意味します。
所属していません StackOverflow