値オブジェクトとは 業務で使う単位で値のルールをクラスとして表現したものです。例えば年齢は通常、number型のようなプリミティブな値で表現されることが多いですが、値オブジェクトではarg型として業務で扱う単位の型で表現します。 書籍「実践ドメイン駆動設計」[1]では、値オブジェクトの特徴について、このように書かれています。 ドメイン内の何かを計測したり定量化したり説明したりする 状態を不変に保つことができる 関連する属性を不可欠な単位として組み合わせることで、概念的な統一体を形成する 計測値や説明が変わったときには、全体を完全に置き換えられる 値が等しいかどうかを、他と比較できる 協力関係にあるその他の概念に「副作用のない振る舞い」を提供する 次のサンプルコードを見て、特徴と照らし合わせながら確認していきます。 /** * 預けているお金の操作を行うクラス */ class Balanc