🎯 什麼情境該想到我
當「是否符合某個商業規則」的判斷邏輯散落在驗證、查詢、建立各處,你想把它抽成一個可重複使用、還能用 and/or/not 自由組合的物件時。
⚙️ 怎麼用(步驟 / 公式)
意圖:把商業規則做成可組合的謂詞物件,統一用於驗證、查詢篩選與建構。
- 把一條規則封裝成一個規格物件,核心是
isSatisfiedBy(candidate)這類判定方法。 - 提供組合運算:
and、or、not,讓小規格拼成複雜規則而不重寫邏輯。 - 一套規格可服務三種用途:驗證物件是否合規、查詢時篩選符合的物件、建構時描述要造出什麼樣的物件。
- 用領域語言命名規格(如
逾期未付訂單、高風險客戶),讓規則本身成為可溝通的概念。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 把規格直接翻成記憶體謂詞去篩選大量資料,效能可能很差;查詢場景常需轉譯成 SQL/查詢條件。
- 規則很簡單且只用一次時,直接寫條件即可,硬套規格是過度設計。
- 別讓規格膨脹成什麼都做的萬用物件,一個規格表達一個清楚的判準。