🎯 什麼情境該想到我

當你只在乎「這個東西的值是什麼」、完全不在乎「它是不是同一個」時——例如金額 100 元、座標 (25.0, 121.5)、一段日期範圍——就把它做成沒有識別、不可變的值物件。

⚙️ 怎麼用(步驟 / 公式)

意圖:用屬性值來描述領域概念,物件本身無識別、不可變、可自由替換與共享。

  1. 確認它由屬性值定義、沒有需要追蹤的身分。
  2. 設計成不可變:所有屬性建立後不再改動,要「變」就產生一個新的值物件替換掉舊的。
  3. 相等性(equals)比對所有屬性值——值全相同即視為相等、可互換。
  4. 把相關的驗證與計算行為(如金額相加、範圍是否重疊)封裝進去,讓它成為有行為的小物件。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 若你需要追蹤「同一個」隨時間演變,那應該是實體,不是值物件。
  • 不可變是關鍵:一旦允許就地修改,共享的值物件會在別處被改壞。
  • 別為省事把該有身分的東西降級成值物件而弄丟了生命週期追蹤。

🔗 相關工具