(圖片來自: http://sourcemaking.com/)
以下為學習 Dealing with Generalization 的筆記.
Collapse Hierarchy
當父類別和子類別無差別時 - 將其合併.
Extract Interface
多個類別內都有相同的方法集合 - 將其方法集合抽取成一個介面.
Extract Subclass
只有某些類別實體會用到該類別的功能(特殊版本) - 建立一個覆寫該功能的子類別.
Extract Superclass
你有兩個擁有類似功能的類別 - 建立其超類別,並將類似的功能整合至超類別.
優點: 消除重複的程式碼.
Form Template Method
類似 Template Pattern .
Pull Up Constructor Body
子類別的建構子中有類似的程式碼 - 將類似程式碼抽取到父類別的建構子,讓子類別的建構子呼叫.
Pull Up Field
兩個子類別有相同的成員變數 - 將該成員變數搬至父類別.
Pull Up Method
兩個子類別有回傳相同結果(意義)的方法 - 將該方法搬至父類別.
Push Down Field
父類別的成員變數只由某個子類別所使用 - 將該成員變數搬至子類別.
Push Down Method
父類別的方法只由某個子類別所使用 - 將該方法搬至子類別.
Replace Delegation with Inheritance
使用到整個委派物件的方法(不斷出現簡單的委派程式碼) - 將委派類別轉換成使用類別的父類別.
Replace Inheritance with Delegation
子類別只用到父類別部份的介面且不想繼續父類別的資料 - 子類別改以委派的方式來使用父類別(父類別變成子類別中的一個成員變數).
0 則回應: