🎯 什麼情境該想到我

當你「客戶端得先向伺服器物件要出它內部的委託物件,再去呼叫那個委託物件」(例如 person.getDepartment().getManager())的時候——這讓客戶端知道了太多內部結構,內部一改就牽動客戶端。在伺服器類別上加一個轉呼叫方法,把委託藏起來,斬斷這條訊息鏈。

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

意圖:在伺服器類別上提供轉呼叫方法,讓客戶端不必知道背後的委託物件。

動作要點(小步安全進行):

  1. 找出客戶端「先取得委託物件、再對它呼叫」的用法。
  2. 在伺服器類別上,為客戶端需要的每個委託操作,建立一個簡單的委託方法(內部自己去呼叫委託物件)。
  3. 逐一把客戶端改成呼叫伺服器上的這個新方法,不再自行取得委託物件,每步測試。
  4. 若都改完後,客戶端已不需要那個取得委託物件的存取器,就移除它,真正把委託隱藏起來。

🧪 我實際套用的紀錄

  • (待填)

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

  • 若很多客戶端需要委託物件的大量不同方法,伺服器會被迫長出一堆轉呼叫方法(形成「中間人」壞味道);這時反而該反向做「移除中間人」,讓客戶端直接使用委託物件。
  • 對治的壞味道:訊息鏈(Message Chains)。
  • 反向手法:移除中間人(Remove Middle Man)。

🔗 相關工具