🎯 什麼情境該想到我
當你「需要一個大家都找得到的地方,來取得共用的服務或物件」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:用一個眾所周知的物件當全域入口,讓程式碼找到共用的服務或物件。
做法要點:
- 提供一個公認的登錄器,透過它查找共用的服務、物件或資料。
- 取代把依賴一路當參數傳遞的做法,需要時直接向登錄器索取。
- 依需求可做成每執行緒(thread-scoped)或每會話範圍,避免共用衝突。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 本質是受控的全域資料,過度使用會造成隱性相依、難測試。
- 多執行緒下要小心可見性與競態,通常需要適當的範圍隔離。
- 能用明確傳參/依賴注入時,往往比登錄器更清楚可測。
🔗 相關工具
- 分離介面 Separated Interface(登錄器常回傳介面型別)
- 外掛 Plugin(用設定決定登錄器裡放哪個實作)
- 企業應用架構模式