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

資訊專欄INFORMATION COLUMN

重構(gòu)-改善既有代碼的設(shè)計(jì)(七)-- 在代碼之間搬移特性

solocoder / 2757人閱讀

摘要:前言決定把責(zé)任放在哪對(duì)于對(duì)象設(shè)計(jì)是最重要的之一。重構(gòu)可以很好的解決這個(gè)問(wèn)題。方法建立一個(gè)新類,將相關(guān)的字段和函數(shù)從舊類搬移到新類。方法將這個(gè)類的所有特性搬移到另一個(gè)類中,然后移除原類。讓這個(gè)擴(kuò)展品成為源類的子類或包裝類。

前言

決定把責(zé)任放在哪對(duì)于對(duì)象設(shè)計(jì)是最重要的之一。重構(gòu)可以很好的解決這個(gè)問(wèn)題。以下是筆者的重構(gòu)方法
注:客戶:調(diào)用接口
客戶類:使用了接口的類
服務(wù)類:提供服務(wù)的類

Move Method(搬移函數(shù))。 問(wèn)題

你的程序中,有個(gè)函數(shù)與其所駐類之外的另一個(gè)類進(jìn)行更多交流:調(diào)用后者或者被后者調(diào)用。

方法

在該函數(shù)最常引用的類中建立一個(gè)有著類似行為的新函數(shù),將舊函數(shù)編程一個(gè)單純的委托函數(shù),或是將舊函數(shù)完全移除。

動(dòng)機(jī)

一個(gè)類有太多行為,或者與另一個(gè)類有太多合作形成高度耦合,為了讓系統(tǒng)中的類更簡(jiǎn)單,干凈利落地實(shí)現(xiàn)系統(tǒng)交付的任務(wù)。

Move Field(搬移字段)。 問(wèn)題

在你的程序中,某個(gè)字段被其所駐類之外的另一個(gè)類更多地用到。

方法

在目標(biāo)類新建一個(gè)字段,修改源字段的所有用戶,令它們改用新字段。

動(dòng)機(jī)

對(duì)于一個(gè)字段,在其所駐類之外的另一個(gè)類中有更多的函數(shù)使用了它。

Extract Class(提煉類)。 問(wèn)題

某個(gè)類做了應(yīng)該由兩個(gè)類做的事情。

方法

建立一個(gè)新類,將相關(guān)的字段和函數(shù)從舊類搬移到新類。

動(dòng)機(jī)

一個(gè)類應(yīng)該是一個(gè)清楚的抽象,處理一些明確的責(zé)任,實(shí)際工作中,類可能不斷擴(kuò)大,加入很多新功能,這樣的類往往有大量函數(shù)和數(shù)據(jù),這樣的類往往不易理解,所以需要提煉類,將其中獨(dú)立的功能提煉出來(lái)形成新的類。

Inline Class(將類內(nèi)聯(lián)化)。 問(wèn)題

某個(gè)類沒(méi)有做太多事情。

方法

將這個(gè)類的所有特性搬移到另一個(gè)類中,然后移除原類。

動(dòng)機(jī)

正好與Extra Class相反,如果一個(gè)類不再承擔(dān)足夠責(zé)任,不再有多帶帶存在的理由,就需要將這個(gè)類塞進(jìn)另一個(gè)類中。

Hide Delegate(隱藏“委托關(guān)系”)。 問(wèn)題

客戶通過(guò)一個(gè)委托類來(lái)調(diào)用另一個(gè)對(duì)象。比如person類(人)調(diào)用department類(部門(mén))來(lái)獲取manager類(經(jīng)理)

方法

在服務(wù)類(人)上建立客戶所需的所有函數(shù),用以隱藏委托關(guān)系。

動(dòng)機(jī)

將委托關(guān)系隱藏起來(lái),防止委托關(guān)系發(fā)生變化,客戶也得相應(yīng)變化,從而去除這種依賴。

Remove Middle Man(移除中間人)。 問(wèn)題

某個(gè)類做了過(guò)多的簡(jiǎn)單委托動(dòng)作。

方法

讓客戶直接調(diào)用受托類。

動(dòng)機(jī)

在Hide Delegate中,封裝受托對(duì)象是有好處的,但是也是有代價(jià)的:每當(dāng)客戶要使用受托類新特性,就必須在服務(wù)端添加一個(gè)簡(jiǎn)單委托函數(shù),隨著受托類功能增多,這個(gè)過(guò)程會(huì)讓人痛苦,服務(wù)類變成了一個(gè)“中間人”,此時(shí)應(yīng)該移除中間人,讓客戶直接調(diào)用受托類。

Introduce Foreign Method(引入外加函數(shù))。 問(wèn)題

你需要為提供服務(wù)的類增加一個(gè)函數(shù),但你無(wú)法修改這個(gè)類。

方法

在客戶類中建立一個(gè)函數(shù),并以第一參數(shù)形式傳入一個(gè)服務(wù)類實(shí)例。

動(dòng)機(jī)

使用一個(gè)類的時(shí)候需要一個(gè)新的服務(wù),但是不能修改源碼,就得在客戶端編碼,補(bǔ)足函數(shù)所需功能。但是如果為一個(gè)服務(wù)類建立了大量外加函數(shù),就不該使用這個(gè)重構(gòu)了,應(yīng)該用Introduce Local Extension。

Introduce Local Extension(引入本地?cái)U(kuò)展)。 問(wèn)題

你需要為服務(wù)類提供一些額外函數(shù),但你無(wú)法修改這個(gè)類。

方法

建立一個(gè)新類,使它包含這些額外的函數(shù)。讓這個(gè)擴(kuò)展品成為源類的子類或包裝類。

動(dòng)機(jī)

類的作者也無(wú)法預(yù)見(jiàn)未來(lái),因此常常沒(méi)能為后來(lái)者準(zhǔn)備足夠有用的函數(shù)。如果無(wú)法修改源碼,需要兩個(gè)以上外加函數(shù),就需要將這些函數(shù)組織在一起,放到一個(gè)恰當(dāng)?shù)牡胤健?/p> 總結(jié)

1:“決定把責(zé)任放在哪兒” 試用 方法: Move Method , Move Filed ,如果需要都試用先試用 Move field 再使用 Move Method 。
2:類責(zé)任過(guò)多 --->Extract class 方法
3:類責(zé)任太少---> inline class
4:一個(gè)類使用另一個(gè)類 ---> Hide Delegate
5:隱藏委托類導(dǎo)致?lián)碛姓叩慕涌诮?jīng)常變化---> Romove Middle Man
6:不能訪問(wèn)類的源碼但是想將責(zé)任移到不可修改的類中 ---> Introduce Foreign Methon(少量函數(shù)) & Introduce Local Extension(較多函數(shù))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69703.html

相關(guān)文章

  • 讀書(shū)筆記《重構(gòu) 改善既有代碼設(shè)計(jì)

    摘要:重構(gòu)在不改變代碼的外在的行為的前提下對(duì)代碼進(jìn)行修改最大限度的減少錯(cuò)誤的幾率本質(zhì)上,就是代碼寫(xiě)好之后修改它的設(shè)計(jì)。重構(gòu)可以深入理解代碼并且?guī)椭业健M瑫r(shí)重構(gòu)可以減少引入的機(jī)率,方便日后擴(kuò)展。平行繼承目的在于消除類之間的重復(fù)代碼。 重構(gòu) (refactoring) 在不改變代碼的外在的行為的前提下 對(duì)代碼進(jìn)行修改最大限度的減少錯(cuò)誤的幾率 本質(zhì)上, 就是代碼寫(xiě)好之后 修改它的設(shè)計(jì)。 1,書(shū)中...

    mdluo 評(píng)論0 收藏0
  • 重構(gòu)---改善既有代碼設(shè)計(jì)》之對(duì)象之間搬移特性

    摘要:本篇文章主要講解重構(gòu)改善既有代碼的設(shè)計(jì)這本書(shū)中的第七章在對(duì)象之間搬移特性中的知識(shí)點(diǎn),搬移函數(shù)問(wèn)題你的程序中,有個(gè)函數(shù)與其所駐之外的另一個(gè)進(jìn)行更多交流調(diào)用后者,或被后者調(diào)用。動(dòng)機(jī)在之間移動(dòng)狀態(tài)和行為,是重構(gòu)過(guò)程中必不可少的措施。 如果你注定要成為厲害的人, 那問(wèn)題的答案就深藏在你的血脈里。 本篇文章主要講解 《重構(gòu)---改善既有代碼的設(shè)計(jì)》 這本書(shū)中的 第七章在對(duì)象之間搬移特性中 的知識(shí)...

    BlackHole1 評(píng)論0 收藏0
  • 重構(gòu)---改善既有代碼設(shè)計(jì)

    摘要:為何重構(gòu)重構(gòu)有四大好處重構(gòu)改進(jìn)軟件設(shè)計(jì)如果沒(méi)有重構(gòu),程序的設(shè)計(jì)會(huì)逐漸腐敗變質(zhì)。經(jīng)常性的重構(gòu)可以幫助維持自己該有的形態(tài)。你有一個(gè)大型函數(shù),其中對(duì)局部變量的使用使你無(wú)法采用。將這個(gè)函數(shù)放進(jìn)一個(gè)單獨(dú)對(duì)象中,如此一來(lái)局部變量就成了對(duì)象內(nèi)的字段。 哪有什么天生如此,只是我們天天堅(jiān)持。 -Zhiyuan 國(guó)慶抽出時(shí)間來(lái)閱讀這本從師傅那里借來(lái)的書(shū),聽(tīng)說(shuō)還是程序員的必讀書(shū)籍。 關(guān)于書(shū)的高清下載連...

    baihe 評(píng)論0 收藏0
  • 重構(gòu)-改善既有代碼設(shè)計(jì)(一)--重構(gòu),第一個(gè)案例

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

    acrazing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<