麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

【重構(gòu)學(xué)習(xí)】10繼承關(guān)系的重構(gòu)

2019-11-14 13:35:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1、字段上移

修改點(diǎn):兩個(gè)子類擁有相同的字段

做法:將該字段移至父類

2、函數(shù)上移

修改點(diǎn):有些函數(shù),在各個(gè)子類中產(chǎn)生完全相同的效果

做法:將該函數(shù)移至父類

有一種特殊情況也需要這么做:子類函數(shù)覆蓋了父類的,但是仍然做著相同的工作

在此重構(gòu)中你可能會(huì)遇到一種情況,就是你提煉的函數(shù)調(diào)用了子類有而父類沒(méi)有的函數(shù),那么在父類中給此父類沒(méi)有的函數(shù),建立一個(gè)虛函數(shù)即可。

3、構(gòu)造函數(shù)本體上移

修改點(diǎn):你在各個(gè)子類中擁有一些構(gòu)造函數(shù),它們的本體幾乎完全一致

做法:在父類中新建一個(gè)構(gòu)造函數(shù),并在子類構(gòu)造函數(shù)中調(diào)用它。

4、函數(shù)下移

修改點(diǎn):父類中的某個(gè)函數(shù)只與部分(而非全部)子類有關(guān)

做法:將這個(gè)函數(shù)移到相關(guān)的那些子類去。

5、字段下移

修改點(diǎn):父類中某個(gè)字段只被部分(而非全部)子類用到

做法:講這個(gè)字段下移到相關(guān)的子類去。

6、提煉子類

修改點(diǎn):類中的某些特性只被某些(而非全部)實(shí)例用到

做法:新建一個(gè)類,將上面所說(shuō)的那一部分特性移至子類

7、提煉父類

修改點(diǎn):兩個(gè)類有相似特性

做法:為這兩個(gè)類建立一個(gè)父類,將相同特性移至超類

8、提煉接口

修改點(diǎn):若干客戶使用類接口中的同一子集,或者兩個(gè)類的接口有部分相同

做法:將相同子集提煉到一個(gè)獨(dú)立接口

意思很簡(jiǎn)單,就是將一個(gè)類里的一些業(yè)務(wù)相關(guān)的函數(shù),或者是兩個(gè)類中部分相同的函數(shù),提取為Interface(這里不用接口用個(gè)英文的原因是在前面的文章中接口一詞可能更多的可以理解為一個(gè)類的公共函數(shù))

9、折疊繼承體系

修改點(diǎn):父類和子類無(wú)太大區(qū)別

做法:將它們合為一體

10、塑造模版函數(shù)

修改點(diǎn):你有一些子類,其中相應(yīng)的某些函數(shù)以相同順序執(zhí)行類似的操作,但各個(gè)操作的細(xì)節(jié)上有所不同

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

意思很簡(jiǎn)單,就是說(shuō)你看見(jiàn)有些函數(shù)的具體操作不同,但是幾個(gè)函數(shù)的組合操作順序是一樣的,那么就把它們的操作順序提煉成函數(shù)放進(jìn)父類。

11、以委托取代繼承

修改點(diǎn):某個(gè)子類只使用父類接口的一部分,或是根本不需要繼承來(lái)的數(shù)據(jù)

做法:在子類中新建一個(gè)字段用以保存父類;調(diào)整子類函數(shù),令它改而委托超類;然后去掉兩者之間的繼承關(guān)系

動(dòng)機(jī):隨著需求的變化,一開(kāi)始的繼承關(guān)系可能在慢慢變化后,你就發(fā)現(xiàn)父類中的許多操作并不適用于子類

Troy:這個(gè)時(shí)候你當(dāng)然可以去把這些不適用子類的方法去搞到另一個(gè)子類里,但是如果做不到,那么就將父類對(duì)象作為子類的一個(gè)對(duì)象吧,去掉繼承關(guān)系,這在設(shè)計(jì)模式里面貌似可以叫橋接模式

12、以繼承取代委托(看吧看吧,總是有相反的兩個(gè)重構(gòu)操作出現(xiàn)

修改點(diǎn):你在兩個(gè)類之間使用委托關(guān)系,并經(jīng)常為整個(gè)接口編寫(xiě)許多極簡(jiǎn)單的委托函數(shù)

做法:讓委托類繼承受托類

兩條告誡:

1.如果你并沒(méi)有使用受托類的所有函數(shù)。那么你可能不需要使用此方法,你可以去去除中間人,用客戶端直接調(diào)用受托類,也可以把委托類和受托類之間提煉出一個(gè)超類,當(dāng)然也可以提取接口

2.受托對(duì)象被不止一個(gè)其他對(duì)象共享,而且受托對(duì)象是可變的。那么這種情況下你也不應(yīng)該用此重構(gòu),因?yàn)檫@樣就無(wú)法共享數(shù)據(jù)了,數(shù)據(jù)共享是委托關(guān)系承擔(dān)的一種責(zé)任,你無(wú)法把它轉(zhuǎn)化為繼承關(guān)系。如果受托對(duì)象不可變你才能這么做。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 毛片网站网址 | 99视频有精品视频高清 | 欧美女优一区 | 亚洲成人国产综合 | 精精国产xxxx视频在线播放7 | 国产精品一区二av18款 | 色视频在线观看 | 国产高潮失禁喷水爽到抽搐视频 | 精品国产一区二区在线观看 | av免费不卡国产观看 | 深夜免费视频 | 毛片免费观看完整版 | 欧美日韩亚洲国产精品 | 蜜桃视频在线观看视频 | 一级尻逼视频 | 羞羞答答xxdd在线播放 | 日韩 综合 | 精品一区二区三区毛片 | www亚洲成人| 男人的天堂视频网站 | 免费看搡女人无遮挡的视频 | 超级av在线 | 一本免费视频 | 日韩精品久久久久久久电影99爱 | 免费国产一区二区视频 | 黄色大片在线免费看 | 一级免费黄色免费片 | 亚洲一区二区不卡视频 | 久久污 | 午夜视频在线观看91 | 海外中文字幕在线观看 | 日韩黄色片免费看 | 操操日日| 国产精品999在线 | 成人精品免费在线观看 | av视在线| 中文在线观看视频 | 国产一级伦理片 | 国产精品久久久久久久成人午夜 | 亚洲射逼 | 久久久久成人免费 |