🎯 什麼情境該想到我

當你「打開一個類別,發現它大部分的方法都只是把呼叫原封不動轉交給另一個物件」的時候——它自己幾乎不做事,只當轉手。

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

這味道是什麼徵兆:封裝與委託是好東西,但過了頭就變成問題——當一個類別半數以上的方法都只是委派給別人,這層中間人就只剩間接的成本、沒帶來價值。

通常用哪些重構手法對治:

  • 移除中間人(Remove Middle Man):讓呼叫端直接與真正做事的物件對話,拿掉多餘轉手。
  • 以繼承取代委託 / 以委託取代子類(Replace Superclass with Delegate / Replace Subclass with Delegate):視關係本質,在繼承與委託之間調整結構。
  • 若只有少數幾個委派方法麻煩,可內聯函式把它們併掉。

🧪 我實際套用的紀錄

  • (待填)

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

  • 委託本身不是壞事——為了隱藏委託(避免訊息鏈)而保留少量轉發是合理的。
  • 中間人與訊息鏈是一體兩面:修訊息鏈可能製造中間人,反之亦然,要在兩者間取平衡點。

🔗 相關工具