タグ

ブックマーク / qiita.com/Terao-Takumi (1)

  • 【ドメイン駆動設計】なぜ値オブジェクトそのものを比較できるようにしなければならないのか? - Qiita

    値オブジェクトは以下の3つの要素を持ったオブジェクトだとされている。 1)不変である(一度インスタンスが作られたら、それが保有する属性の値は変化してはいけない) 2)交換が可能である(再代入=交換によってのみ値を変更することができる) 3)等価性によって比較される このうち、3)は絶対に必要なんだろうか? 例えば、Date型にかなり近い、YearMonth(年と月をもったオブジェクト)を定義してみよう。 class YearMonth attr_reader :date def initialize(year, month) @date = Date.new(year, month, 1) end end 一応値オブジェクトとして定義しているものの、「日付が1日のDate型オブジェクト」」としても外部から認識できる。なら、YearMonthそのものを比較できなくても、保有しているDate型

    【ドメイン駆動設計】なぜ値オブジェクトそのものを比較できるようにしなければならないのか? - Qiita
    syuu256
    syuu256 2022/08/01
  • 1