《重構(gòu)》讀書筆記 第十一章

處理概括關(guān)系

11.1 Pull Up Field (字段上移)

兩個子類擁有相同的字段,將字段移至超類

11.2 Pull Up Method (函數(shù)上移)

有些函數(shù),在各個子類中產(chǎn)生完全相同的結(jié)果,將該函數(shù)移至超類

11.3 Pull Up Constructor Body (構(gòu)造函數(shù)本體上移)

如果在各個子類中擁有一些構(gòu)造函數(shù),它們的本體幾乎完全相同,在超類中新建一個構(gòu)造函數(shù),并在子類構(gòu)造函數(shù)中調(diào)用它

11.4 Push Down Method (函數(shù)下移)

超類中的某個函數(shù)只與部分子類有關(guān),將這個函數(shù)移到相關(guān)的那些子類去

11.5 Push Down Field(字段下移)

超類中的某個字段只被部分子類用到,將這個字段移動到需要它的那個子類去

11.6 Extract Subclass (提煉子類)

類中的某些特性只被某些實(shí)例用到,新建一個子類,將上面所說的那一部分特性移動到子類中

11.7 Extract Superclass (提煉超類)

兩個類有相似特性,為這兩個類建立一個超類,將相同特性移至超類

11.8 Extract Interface(提煉接口)

若干客戶使用類接口中的同一子集,或者兩個類的接口有部分相同,將相同的子集提煉到一個獨(dú)立接口中。

11.9 Collapse Hierarchy(折疊繼承體系)

超類和子類之間無太大區(qū)別,將它們合為一體

11.10 Form Template Method (塑造模板函數(shù))

有一些子類,其中響應(yīng)的某些函數(shù)以相同順序執(zhí)行類似的操作,但哥哥操作的細(xì)節(jié)上有所不同

將這些操作分別放進(jìn)獨(dú)立函數(shù)中,并保持它們都有相同的簽名,于是原函數(shù)也就變得相同了,然后將原函數(shù)上移至超類

在JDK庫里有很多類似的操作,線程池/AQS源碼等

11.11 Replace Inheritance with Delegation(以委托取代繼承)

某個子類只使用超類接口中的一部分,或者是根本不需要集成而來的數(shù)據(jù)

就是用組合取代集成

11.12 Replace Delegation with Inheritance (以繼承取代委托)

如果你發(fā)現(xiàn)自己需要使用委托類中的所有函數(shù),且話費(fèi)了很大力氣編寫所有極簡的委托函數(shù),
可以將組合方式改為集成方式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2022-08-12 第十一章 處理概括關(guān)系 11.1 Pull Up Field(字段上移) 兩個子類擁有相同的...
    姬婉溪閱讀 279評論 0 0
  • chapter 1 重構(gòu),第一個案例 1.1 什么時候需要重構(gòu) 需要為程序添加一個特性,但代碼結(jié)構(gòu)無法使自己方便的...
    VictorBXv閱讀 2,226評論 0 1
  • 一,重構(gòu),第一個案例 這一章作者先用一個影片出租程序的案例,來演示重構(gòu)的過程 每個Customer顧客可以租多部M...
    高稷閱讀 11,087評論 1 19
  • 《重構(gòu)》讀書筆記 總覽 第一部分 第一章從實(shí)例程序出發(fā),展示設(shè)計的缺陷,對其重構(gòu)可以了解重構(gòu)的過程和方法。 第二部...
    白樺葉閱讀 2,537評論 2 5
  • 第一章 重構(gòu),第一個案例 如果你發(fā)現(xiàn)自己需要為程序添加一個特性,而代碼結(jié)構(gòu)使你無法很方便地達(dá)成目的,那就先重構(gòu)那個...
    文浩讀書閱讀 960評論 0 0

友情鏈接更多精彩內(nèi)容