重構 - 改善既有程式的設計 - Message Chain
April 17, 2020
這篇文章討論《重構 - 改善既有程式的設計》裡的3.15 - Message Chain
圖片以及程式碼來源自重構 - 改善既有程式的設計
過度耦合的訊息鏈
如果模組A跟模組B合作 且模組B跟模組C合作 我們不希望模組A了解模組C的資訊 比如說
我們稱為Message Chain 這意味著物件之間的緊密耦合
這樣的話 如果你未來想在B跟C之間插入一個Q 你會難以進行架構上的變動 你必須找到所有的a.getB().getC()
改成a.getB().getQ().getC()
解法
Hide Delegate
假設我們有個Person
和Department
這種情況下 你想知道一個人的老闆 只能
但這樣增加了Person
跟Department
的耦合 畢竟Person
根本就不Care Department
那怎麼辦 就在Person裡面加一個Delegate method: getManager()
注意這時候我就可以拿掉Person
裡面的getDepartment()
了