Value object
さまざまなオブジェクト指向プログラミング言語のニュアンスにより、それぞれに値オブジェクトを実装および使用するための独自のメソッドとパターンがある。
コンピュータサイエンスでは、Value Object(値オブジェクト)は、同等性がアイデンティティに基づいていない単純なエンティティを表す小さなオブジェクトである。つまり、2つの値オブジェクトは、同じ値を持つ場合は等しく、必ずしもそれらが同一のオブジェクトである必要はない。
値オブジェクトの例としては、金額や日付範囲を表すオブジェクトなどが挙げられる。
小さいので、同じエンティティを表す同じ値オブジェクトの複数のコピーを持つことが可能である。単一のインスタンスに依存してそのオブジェクトを共有するよりも、新しいオブジェクトを作成する方が簡単な場合がよくある。
値オブジェクトは不変である事が好ましい:これは、2つの値オブジェクトが等しく作成され、等しいままであるという暗黙の前提に必要となる。クライアントコードが値オブジェクトを無効な状態にしたり、インスタンス化の後にバグのある挙動を導入したりできないようにする点でも有用である。
値オブジェクトは、DDDの構成要素の1つでもある。