摘要:構造函數比較難以向上拉動,因此專門有一個構造函數本體上移處理它,一般不會將構造函數往下推,因為以工廠函數取代構造函數通常更管用。
前言
有一批重構手法專門用來處理概括關系(即繼承關系),主要是將函數上下移動于繼承體系之中字段上移和方法上移都用于將特性向繼承體系的上端移動,字段下移和方法下移則將特性向繼承體系的下端移動。構造函數比較難以向上拉動,因此專門有一個構造函數本體上移處理它,一般不會將構造函數往下推,因為以工廠函數取代構造函數通常更管用。
字段上移 問題兩個子類擁有相同的字段
方法將該字段上移
動機既然是相同字段就應該放在父類中
函數上移 問題有些函數,在各個子類中產生完全相同的效果
方法將該函數移至超類
動機相同效果的方法應該可以做成一個方法吧。
構造函數本體上移 問題在各個子類中擁有一些構造函數,他們的本體幾乎完全一致
方法在超類中新建一個構造函數,并在子類構造函數中調用它
動機又是重復代碼。。。
函數下移 問題超類中的某個函數只與部分(而非全部)子類有關
方法將這個函數移到相關的子類去
動機這個就是依戀關系。直接遷移函數
字段下移 問題超類中的某個字段只被部分(而非全部)子類用到
方法將這個字段移到需要它的那些子類去
動機這個就是依戀關系。直接遷移字段
提煉子類 問題類中的某些特性只被某些(而非全部)實例用到
方法新建一個子類,將上面所說的那一部分特性移到子類中
動機說明這個類并不是只做一件事。而且還比較重。需要拆分
提煉超類 問題兩個類有相似的特性
方法為這兩個類建立一個超類,將相同特性移至超類
動機用父類來封裝相似的特性,用子類來新特性
# 提煉接口
問題若干客戶使用類接口中的同一子集,或者兩個類的接口有部分相同
方法將相同的子集提煉到一個獨立的接口中
動機同上
折疊繼承體系 問題超類和子類之間沒有太大的區別
方法將它們合為一體
動機根據具體情況而用
塑造模板函數 問題有一些子類,其中相應的某些函數以相同順序執行類似的操作,但各個操作的細節上有所不同
方法將這些操作分別放進獨立函數中,并操持它們都有相同的簽名,于是原函數也就變得相同了,然后將原函數上移至超類。
動機比如java的泛型,就是模板函數,能夠大大減少代碼重復
以委托取代繼承 問題某個子類只使用超類接口中的一部分,或是根本不需要繼承而來的數據
方法在子類中新建一個字段用以保存超類,調整子類函數,令它改而委托超類,然后去掉兩者之間的繼承關系。
動機如果只使用方法的話,可以這樣使用
以繼承取代委托 問題在兩個類之間使用委托關系,并經常為整個接口編寫許多極簡單的委托函數。
方法·讓委托類繼承受托類
動機太簡單的委托是沒有必要的。只會增加代碼量。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71128.html
摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...
摘要:為何重構重構有四大好處重構改進軟件設計如果沒有重構,程序的設計會逐漸腐敗變質。經常性的重構可以幫助維持自己該有的形態。你有一個大型函數,其中對局部變量的使用使你無法采用。將這個函數放進一個單獨對象中,如此一來局部變量就成了對象內的字段。 哪有什么天生如此,只是我們天天堅持。 -Zhiyuan 國慶抽出時間來閱讀這本從師傅那里借來的書,聽說還是程序員的必讀書籍。 關于書的高清下載連...
摘要:前言決定把責任放在哪對于對象設計是最重要的之一。重構可以很好的解決這個問題。方法建立一個新類,將相關的字段和函數從舊類搬移到新類。方法將這個類的所有特性搬移到另一個類中,然后移除原類。讓這個擴展品成為源類的子類或包裝類。 前言 決定把責任放在哪對于對象設計是最重要的之一。重構可以很好的解決這個問題。以下是筆者的重構方法注:客戶:調用接口客戶類:使用了接口的類服務類:提供服務的類 Mov...
摘要:并根據目錄選讀第章重構,第一個案例這是只是一個方法。絕大多數情況下,函數應該放在它所使用的數據的所屬對象內最好不要在另一個對象的屬性基礎上運用語句。 什么是重構 在不改變代碼外在行為的前提下,對代碼做出修改以改進程序內部的結構簡單地說就是在代碼寫好后改進它的設計 誰該閱讀這本書 專業程序員(能夠提高你的代碼質量) 資深設計師和架構規劃師(理解為什么需要重構,哪里需要重構) 閱讀技巧...
閱讀 2690·2021-11-08 13:16
閱讀 2367·2021-10-18 13:30
閱讀 2237·2021-09-27 13:35
閱讀 1993·2019-08-30 15:55
閱讀 2442·2019-08-30 13:22
閱讀 576·2019-08-30 11:24
閱讀 2077·2019-08-29 12:33
閱讀 1813·2019-08-26 12:10