Data Bag
Data Bag
資料袋承擔資料的搬運與呈現:DTO、API model、UI state、設定物件。它的特徵是任何欄位組合都是合法狀態——修改其中一欄、其餘欄位的意義照舊成立。因為組合全部合法、逐欄位覆寫工具(copyWith、setter、builder)在資料袋上語意清晰、沒有代價。DDD 社群常用「貧血模型(anemic model)」指沒有行為的資料容器——語意接近、但資料袋是正確形態而非缺陷,判定依不變式有無而定。
概念位置
資料袋跟領域模型是型別類別的兩端。判準是「有沒有不允許任意組合的欄位」——有就是領域模型、沒有就是資料袋。資料袋裡照樣可以放語意封閉的 value object(如 Money);容器的類別判定跟欄位的封閉性是正交的兩條軸。資料袋可以隨業務演進升級成領域模型——升級時機由演化訊號決定、而非預測。
可觀察訊號
型別的每個欄位都可以獨立修改且不影響其餘欄位的語意——資料袋。型別上出現「請用某方法修改」的註解但欄位仍全部 public 可寫——判定可能錯了、讀 資料袋與領域模型 重新檢視。
設計責任
資料袋加上領域模型的儀式(工廠、私有建構、變更方法)只會製造沒有規則可守的 boilerplate。判斷準則是「這個型別有沒有需要強制的規則」——沒有就不要建領域模型。完整判準見 資料袋與領域模型。