はじめに
最近ValueObject
パターンなるものを知ったのですが、DDD(ドメイン駆動開発)で用いられる手法の一つのようです。
今回はメリット等には触れず、ValueObject
の作り方だけに注目していきたいと思います。
作り方
int value;
↓
public class IntValueObject { // Setterは使わない private int _value; public IntValueObject(int value) { // 不正な値は例外を投げる if (value < 0) throw new ArgumentException(); // コンストラクタ内のみフィールドを変更 _value = value; } // 許可した演算しかできないように public IntValueObject Add(IntValueObject x, IntValueObject y) { // 新しいインスタンスを返す return new IntValueObject(x._value + y._value); } }
おまけでEntityについて
ValueObject
と同じモデルの表現方法としてEntity
というものもあります。
Entity
の特徴としては識別子が同じなら同一判定と可変であることです。
さいごに
ValueObject
についてもっと知りたい方はこちらの記事をご覧ください。
qiita.com
後、公式ドキュメントも。
docs.microsoft.com
ぶっちゃけドメイン駆動開発は1mmも理解していないので,後でじっくりと調べてみたいと思います。
ではまた。