第七章 在對象之間搬移特性

來源:互聯網
上載者:User

 

第七章 在對象之間搬移特性(Moving Features Between Objects)

 

7.1  Move Method(搬移函數)

癥狀:你的程式中,有個函數與其所駐class之外的另一個class進行更多交流;調用後者或被後者調用。

解決辦法:在該函數最常引用的class中建立一個有著類似行為的新函數。將舊函數變成一個單純的委託函數,或者是將舊函數完全移除。

 

7.2  Move Field(搬移範圍)

癥狀:你的程式中,某個field(範圍)被其所駐class之外的另一個class更多地用到。

解決辦法:在target class建立一個new field,修改source field的所有使用者,令它們改用new field.

 

7.3  Extract Class(提煉類)

癥狀:某個class做了應該由兩個classes做的事

解決辦法:

 

7.4  Inline Class(將類內聯化)

癥狀:你的某個class沒有做太多事情(沒有承擔足夠責任)

解決辦法:將class的所有特性搬移到另一個class中,然後移除原class

 

7.5  Hide Delegate(隱藏委託關係)

癥狀:客戶直接調用其server object(服務物件)的delegate class.

解決辦法:在server端(某個class)建立客戶所需的所有函數,用以隱藏委託關係。

 

7.6  Remove Middle Man(移除中間人)

癥狀:某個class 做了過多的簡單委託動作(simple delegation)

解決辦法:讓客戶直接調用delegate(受託類)

 

7.7  Introduce Foreign Method(引入外加函數)

癥狀:你所使用的server class需要一個額外函數,但你無法修改這個class.

解決辦法:在client class中建立一個函數,並以一個server class實體作為第一引數(argument)


7.8  Introduce Local Extension(引入本地擴充)

癥狀:你所使用的server class需要一些額外函數,但你無法修改這個class

解決辦法:建立一個新class,使它包含這些額外函數。讓這個擴充品成為souce class的subclass或wrapper(外覆類)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.