ドメイン駆動設計に本を何回読んでも自分が本当に理解しているかわからないのでアウトプットしていきます。
今回はEntityについて
Entityは英語で「実体」という意味です。
DDDにおける「エンティティ」とは一意なものを表現する概念です。一意であるため、長期にわたって変化できるオブジェクトとなります。例えば「社員」というエンティティの場合、社員番号で社員を一意に識別することで、同じ人物であることを把握し、住所や所属といった属性を適切に変更できます。なお、一意に識別して変更を管理する必要がないものは「値オブジェクト(6章にて紹介)」として取り扱います。
同一性
というキーワードが肝になります。
同一性とはどう言ったものでしょうか?
例えば東京都北区赤羽株式会社という会社に1976年11月16日生まれで45歳の西村博之という人が2人いるとします。
会社内でこの2人を区別するためには社員番号
が必要になります。
この社員番号があれば両者の違いを知ることができるようになります。
これがEntityの同一性
という考え方です。
Entityの性質
- 可変である
- 同じ属性であっても区別される
- 同一性により区別される
2と3は例えば東京都北区赤羽~
の文でわかりました。
1はどうでしょうか
1は例えば西村博之の名前が有吉弘行に改名されたとしても社員番号で同一性が担保されているため、変更、更新することができるということです。また体重でもそうです。もしこの人が70kgだとして、もし70.1kgになったら全く別の人ということになったら困ります。しかしEntityでは同一性があるおかげでこの可変ということが守られているということになるんですね。
参考