Entityとは

はじめに

DDDのEntityについて書いていこうと思います。
Entityと値オブジェクト(VO)は、ドメインオブジェクトであり業務のルールや知識を表しています。EntityとVOを使用することで、業務の中に登場してくるものを表すことがコードで表せるようになります。

Entityとは

Entityは、識別子を持ったオブジェクトで現実世界のものを表しています。
例えば、「ユーザ」や「設定」などです。これらのユーザや設定に識別子をもたせることで、他のオブジェクトと区別しています。VOとの違いは、同一性で区別できるかどうかです。
 Entityには以下の性質があります。
・可変
・同じ属性でも区別される
・同一性で区別

可変

Entityは可変で、オブジェクトのプロパティを変更することができます。
なので、設定などの中身が更新される可能性のあるものに使います。
(VOは不変なのでプロパティを更新できない)

同じ属性でも区別される

Entityの同クラスのオブジェクトは、識別子によって区別されます。(VOだと同じプロパティかどうかで区別)
これにより、同じクラスから作られたユーザなども区別して、プログラムの中で扱うことができます。

同一性で区別

識別子で区別するので、オブジェクトのプロパティが変更されても問題はありません。

まとめ

Entityについて書いていきました。VOとの使い分けを意識して使用することで、よりドメインを詳細に表せそうだと思いました。また、EntityやVOにドメインから抽出したルールや振る舞いを追加することで、饒舌なEntity・VOにしていくことが重要だということもわかりました。

この記事が気に入ったらサポートをしてみませんか?