国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重構-改善既有代碼的設計(十一)--處理概括關系

sherlock221 / 552人閱讀

摘要:構造函數比較難以向上拉動,因此專門有一個構造函數本體上移處理它,一般不會將構造函數往下推,因為以工廠函數取代構造函數通常更管用。

前言

有一批重構手法專門用來處理概括關系(即繼承關系),主要是將函數上下移動于繼承體系之中字段上移和方法上移都用于將特性向繼承體系的上端移動,字段下移和方法下移則將特性向繼承體系的下端移動。構造函數比較難以向上拉動,因此專門有一個構造函數本體上移處理它,一般不會將構造函數往下推,因為以工廠函數取代構造函數通常更管用。

字段上移 問題

兩個子類擁有相同的字段

方法

將該字段上移

動機

既然是相同字段就應該放在父類中

函數上移 問題

有些函數,在各個子類中產生完全相同的效果

方法

將該函數移至超類

動機

相同效果的方法應該可以做成一個方法吧。

構造函數本體上移 問題

在各個子類中擁有一些構造函數,他們的本體幾乎完全一致

方法

在超類中新建一個構造函數,并在子類構造函數中調用它

動機

又是重復代碼。。。

函數下移 問題

超類中的某個函數只與部分(而非全部)子類有關

方法

將這個函數移到相關的子類去

動機

這個就是依戀關系。直接遷移函數

字段下移 問題

超類中的某個字段只被部分(而非全部)子類用到

方法

將這個字段移到需要它的那些子類去

動機

這個就是依戀關系。直接遷移字段

提煉子類 問題

類中的某些特性只被某些(而非全部)實例用到

方法

新建一個子類,將上面所說的那一部分特性移到子類中

動機

說明這個類并不是只做一件事。而且還比較重。需要拆分

提煉超類 問題

兩個類有相似的特性

方法

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

動機

用父類來封裝相似的特性,用子類來新特性

# 提煉接口

問題

若干客戶使用類接口中的同一子集,或者兩個類的接口有部分相同

方法

將相同的子集提煉到一個獨立的接口中

動機

同上

折疊繼承體系 問題

超類和子類之間沒有太大的區別

方法

將它們合為一體

動機

根據具體情況而用

塑造模板函數 問題

有一些子類,其中相應的某些函數以相同順序執行類似的操作,但各個操作的細節上有所不同

方法

將這些操作分別放進獨立函數中,并操持它們都有相同的簽名,于是原函數也就變得相同了,然后將原函數上移至超類。

動機

比如java的泛型,就是模板函數,能夠大大減少代碼重復

以委托取代繼承 問題

某個子類只使用超類接口中的一部分,或是根本不需要繼承而來的數據

方法

在子類中新建一個字段用以保存超類,調整子類函數,令它改而委托超類,然后去掉兩者之間的繼承關系。

動機

如果只使用方法的話,可以這樣使用

以繼承取代委托 問題

在兩個類之間使用委托關系,并經常為整個接口編寫許多極簡單的委托函數。

方法·

讓委托類繼承受托類

動機

太簡單的委托是沒有必要的。只會增加代碼量。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71128.html

相關文章

  • Java學習路線總結,搬磚工逆襲Java架構師(全網最強)

    摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • 重構---改善既有代碼設計

    摘要:為何重構重構有四大好處重構改進軟件設計如果沒有重構,程序的設計會逐漸腐敗變質。經常性的重構可以幫助維持自己該有的形態。你有一個大型函數,其中對局部變量的使用使你無法采用。將這個函數放進一個單獨對象中,如此一來局部變量就成了對象內的字段。 哪有什么天生如此,只是我們天天堅持。 -Zhiyuan 國慶抽出時間來閱讀這本從師傅那里借來的書,聽說還是程序員的必讀書籍。 關于書的高清下載連...

    baihe 評論0 收藏0
  • 重構-改善既有代碼設計(七)-- 在代碼之間搬移特性

    摘要:前言決定把責任放在哪對于對象設計是最重要的之一。重構可以很好的解決這個問題。方法建立一個新類,將相關的字段和函數從舊類搬移到新類。方法將這個類的所有特性搬移到另一個類中,然后移除原類。讓這個擴展品成為源類的子類或包裝類。 前言 決定把責任放在哪對于對象設計是最重要的之一。重構可以很好的解決這個問題。以下是筆者的重構方法注:客戶:調用接口客戶類:使用了接口的類服務類:提供服務的類 Mov...

    solocoder 評論0 收藏0
  • 重構-改善既有代碼設計(一)--重構,第一個案例

    摘要:并根據目錄選讀第章重構,第一個案例這是只是一個方法。絕大多數情況下,函數應該放在它所使用的數據的所屬對象內最好不要在另一個對象的屬性基礎上運用語句。 什么是重構 在不改變代碼外在行為的前提下,對代碼做出修改以改進程序內部的結構簡單地說就是在代碼寫好后改進它的設計 誰該閱讀這本書 專業程序員(能夠提高你的代碼質量) 資深設計師和架構規劃師(理解為什么需要重構,哪里需要重構) 閱讀技巧...

    acrazing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<