重構-Dealing with Generalization

Refactor
(圖片來自: 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 則回應: