重構 - 改善既有程式的設計 - Inappropriate Intimacy
April 16, 2020這篇文章討論《重構 - 改善既有程式的設計》裡的3.17 - Inappropriate Intimacy
圖片以及程式碼來源自重構 - 改善既有程式的設計
不恰當的親密關係
就是兩個類別過於親密了 花太多時間去研究彼此的private成分
好的類別應該要進少的去了解其他的類別
解法
Move Method
如果一個方法或是欄位屬於Class2但只被Class1存取 那就把這個方法或欄位移過去吧
Change Bidirectional Association to Unidirectional
原本兩個類別之間有雙向關聯 但如果Order
不再需要了解Customer
的特性 就該去除不必要的關聯
這樣可以讓依賴關係變成單向
Replace Inheritance with Delegation
繼承往往是造成過度親密的原因 因為subClass對superClass的了解總是超出預期 你可以用delegation來減少兩者的依賴