🎯 什麼情境該想到我
當你「要一個依內容判斷相等、而非依身分的小物件」的時候(如日期、座標、金額)。
⚙️ 怎麼用(步驟 / 公式)
意圖:用「值」而非「識別」判斷相等的小物件,通常設計為不可變。
做法要點:
- 相等性依欄位內容決定,兩個值相同即視為相等(覆寫相等與雜湊)。
- 通常設計為不可變(immutable),要變就產生新物件,避免共享時被意外改動。
- 對比參考物件(Reference Object):後者靠身分(identity)辨別,如客戶、帳戶。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 需要跨處共享並追蹤同一實體、以身分辨別時,用參考物件而非值物件。
- 記得同時正確覆寫相等與雜湊,否則放進集合會出錯。
- 不可變帶來安全,但頻繁產生新物件在極端情況下要注意成本。
🔗 相關工具
- 金錢 Money(表示金額與幣別的值物件)
- 特例 Special Case(以子類別代表特殊值,取代 null)
- 企業應用架構模式