某個類沒有作太多事情。將這個類的全部特性搬移到另外一個類,而後移除原類。 java
Inline Class 正好與Extract Class相反。若是一個類再也不承擔足夠責任、再也不有單獨存在的理由(這一般是由於此前的重構動做移走了這個類的責任),咱們就應該挑選這一「萎縮類」的最頻繁用戶(也是個類),以Inline Class手法將「萎縮類」塞進另外一個類中。 函數
1.在目標類身上聲明源類的public協議,將全部函數委託至源類。 測試
若是「以一個獨立接口表示源類函數」更合適的話,就應該在內聯以前先使用Extract Interface。 spa
2.修改全部源類引用點,改而引用目標類。 code
將源類聲明爲private,以斬斷包以外的全部引用可能。同時修改源類的名稱,這即可使編譯器幫助你捕捉到全部對於源類的隱藏引用點。 接口
3.編譯,測試。 get
4.運用Move Method 和Move Field將源類的特性所有搬移到目標類 編譯器
5.爲源類舉行一個簡單的「喪禮」。 io
上個重構(Extract Class )咱們從TelephoneNumber提煉出另外一個類,如今咱們將它塞回到Person去。一開始這兩個類是分離的(Extract Class中的範例)。 編譯
首先咱們在Person中聲明TelephoneNumber的全部public 函數:
String getAreaCode() { return officeTelephone.getAreaCode(); } void setAreaCode( String arg ) { officeTelephone.setAreaCode( arg ); } String getNumber() { return officeTelephone.getNumber(); } void setNumber( String arg ) { officeTelephone.setNumber( arg ); }如今,找出TelephoneNumber的全部用戶,讓它們轉而是用Person的接口。因而代碼以下:
Person martin = new Person(); martin.getOfficeTelephone().setAreaCode( "781" );就變成了
Person martin = new Person(); martin.setAreaCode( "781" );如今,咱們能夠反覆是用Move Method和Move Field,直到TelephoneNumber不復存在。