處理歸納關係(繼承)相關重構手法ide
1.pull up field(字段上移)(2個子類擁有相同的字段。將該字段移到超類中)函數
2.pull up method(函數上移)(有些函數在各個子類中產生徹底相同的額效果。將函數移到超類)idea
3.pull up constructor body(構造函數本體上移)(你在各個子類中擁有一些構造函數,他們的本體幾乎徹底一致。在超類中新建一個構造函數,而且在子類構造函數中調用它)spa
4.push down method(函數下移)(超類中某個函數只和部分子類有關。將這個函數移動相關的那些子類去)orm
5push down field(字段下移)(超類中某個字段只被部分子類用到。將這個字段移到須要他的子類中去)繼承
6.extract subclass(提煉子類)(類中的某些特性只被某些實例用到。新建一個子類把上面的部分特性移動到子類中)接口
7.extract superclass(提煉超類)(2個類有類似的特性。爲這2個類創建一個超類,將系統特性移到超類)it
8.extract interface(提煉接口)(若干客戶使用類中的同一子集,或者2個類的接口部分相同。將相同的子類提煉到一個獨立接口中)io
9.collapse hidearchy(摺疊繼承關係)
超類和子類區別並不大(將他們合爲一體)form
10.form template method(塑造模板函數)
你有一些子類,其中相應的某些函數以相同的額順序執行相似的操做,但各個的細節不一樣。把相同操做提煉到一個函數而且移動到超類,
11.replace inheritance with delegation(委託取代繼承)
某個子類只是用超類衝部分接口,或者根本不須要繼承而來的數據(用組合的方式來替代繼承,用一個字段來保存超類,調整子類函數,而後去掉繼承關係)
12. replace delegation with inheritance(繼承取代委託) 你在2個類中使用委託關係,並常常爲整個接口 編寫許多簡單的委託函數(移除這些委託,改成繼承關係)