質問

サンプル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がこれらのルールを維持することを意味します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top