優(yōu)雅編程之這樣處理繼承關(guān)系,你就“正?!绷耍ǘ?/h2>

開(kāi)心一笑

【一孩子數(shù)學(xué)成績(jī)不好,有次考試只考了8分,為了不挨揍他偷偷地加了一個(gè)0,回家后老媽看著我的試卷問(wèn)他:“你是不是改分?jǐn)?shù)了?”他理直氣壯地說(shuō)沒(méi)有,老媽邊揍邊罵:“讓你考個(gè)08分,讓你考個(gè)08分。”】

提出問(wèn)題

項(xiàng)目中如何處理代碼之間括號(hào)關(guān)系(繼承關(guān)系)???

解決問(wèn)題

勵(lì)志圖片

以下來(lái)自《重構(gòu)》這本書(shū)的筆記,由于本章相對(duì)比較簡(jiǎn)單,都是書(shū)本原話,可查看書(shū)籍學(xué)習(xí)相關(guān)實(shí)例。

Pull Up Field(字段上移)

兩個(gè)子類(lèi)擁有相同的字段,將該字段移至超類(lèi)。

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

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

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

你在各個(gè)子類(lèi)中擁有一些構(gòu)造函數(shù),它們的本體幾乎完全一致。在超類(lèi)中建一個(gè)構(gòu)造函數(shù),并在子類(lèi)構(gòu)造函數(shù)中調(diào)用它。

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

超類(lèi)中的某個(gè)函數(shù)只與部分子類(lèi)有關(guān)。將這個(gè)函數(shù)移動(dòng)到相關(guān)的那些子類(lèi)去。

Push Down Field(字段下移)

超類(lèi)中的某個(gè)字段只被部分(而非全部)子類(lèi)用到。將這個(gè)字段移到需要它的那些子類(lèi)去。

Extract Subclass(提煉子類(lèi))

類(lèi)中的某些特性只被某些(而非全部)實(shí)例用到。新建一個(gè)子類(lèi),將上面所說(shuō)的那一部分特性移動(dòng)到子類(lèi)中。

Extract Superclass(提煉超類(lèi))

兩個(gè)類(lèi)有相似特性。為這兩個(gè)類(lèi)建立一個(gè)超類(lèi),將相同特性移至超類(lèi)。

Extract Interface(提煉接口)

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

Collapse Hierarchy(折疊繼承體系)

超類(lèi)和子類(lèi)之間無(wú)太大區(qū)別。將它們合為一體。

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

你有一些子類(lèi),其中相應(yīng)的某些函數(shù)以相同順序去執(zhí)行類(lèi)似的操作,但各個(gè)操作的細(xì)節(jié)上有所不同,將這些操作分別放進(jìn)獨(dú)立函數(shù)中,并保持它們都有相同的簽名,于是原函數(shù)也就變得相同的,然后將原函數(shù)上移至超類(lèi)中。

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

某個(gè)子類(lèi)只使用超類(lèi)接口中的一部分,或者根本不需要繼承而來(lái)的數(shù)據(jù),在子類(lèi)中新建一個(gè)字段,用于保存超類(lèi),調(diào)整子類(lèi)函數(shù),令它改為委托超類(lèi),然后去掉兩者之間的繼承關(guān)系。

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

你在兩個(gè)類(lèi)之間使用委托關(guān)系,并經(jīng)常為整個(gè)接口編寫(xiě)許多極簡(jiǎn)單的委托函數(shù),讓委托類(lèi)繼承受托類(lèi)。

讀書(shū)感悟

來(lái)自《喜寶》

  • 如果有人用鈔票扔你,跪下來(lái),一張張拾起,不要緊,與你溫飽有關(guān)的時(shí)候,一點(diǎn)點(diǎn)自尊不算什么。
  • 好家庭的孩子多數(shù)天真得離譜的。
  • 我最怕別人為我犧牲,凡是用到這種字眼的人,事后都要后悔的,將來(lái)天天有一個(gè)人向我提著當(dāng)年如何為我犧牲,我受不了。
  • 喜寶說(shuō):“我一直希望得到很多愛(ài)。如果沒(méi)有愛(ài),很多錢(qián)也是好的。如果兩者都沒(méi)有,我還有健康。我其實(shí)并不貧乏。
  • 當(dāng)一個(gè)男人喜歡一個(gè)女人的時(shí)候,他可以為她做一切事。
  • 有能力的人影響別人,沒(méi)能力的人受人影響。

其他

如果有帶給你一絲絲小快樂(lè),就讓快樂(lè)繼續(xù)傳遞下去,歡迎轉(zhuǎn)載,點(diǎn)贊,頂,歡迎留下寶貴的意見(jiàn),多謝支持!

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

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

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