Entityとは
はじめに
DDDのEntityについて書いていこうと思います。
Entityと値オブジェクト(VO)は、ドメインオブジェクトであり業務のルールや知識を表しています。EntityとVOを使用することで、業務の中に登場してくるものを表すことがコードで表せるようになります。
Entityとは
Entityは、識別子を持ったオブジェクトで現実世界のものを表しています。
例えば、「ユーザ」や「設定」などです。これらのユーザや設定に識別子をもたせることで、他のオブジェクトと区別しています。VOとの違いは、同一性で区別できるかどうかです。
Entityには以下の性質があります。
・可変
・同じ属性でも区別される
・同一性で区別
可変
Entityは可変で、オブジェクトのプロパティを変更することができます。
なので、設定などの中身が更新される可能性のあるものに使います。
(VOは不変なのでプロパティを更新できない)
同じ属性でも区別される
Entityの同クラスのオブジェクトは、識別子によって区別されます。(VOだと同じプロパティかどうかで区別)
これにより、同じクラスから作られたユーザなども区別して、プログラムの中で扱うことができます。
同一性で区別
識別子で区別するので、オブジェクトのプロパティが変更されても問題はありません。
まとめ
Entityについて書いていきました。VOとの使い分けを意識して使用することで、よりドメインを詳細に表せそうだと思いました。また、EntityやVOにドメインから抽出したルールや振る舞いを追加することで、饒舌なEntity・VOにしていくことが重要だということもわかりました。
この記事が気に入ったらサポートをしてみませんか?