《重構》中有點不清楚的兩個手法

來源:互聯網
上載者:User

感覺“以子類取代型別碼”和“範圍取代子類”應該是一個互為逆向的重構手法,不過書中沒有這麼說,所以只能瞎猜了,盼高人拍磚指正。

下面是本人總結的兩類手法的對比:

以子類取代型別碼 Replace Type Code with Subclasses

源類情況:私人成員儲存型別碼
          建構函式中指定型別碼以建立相應對象
重構結果:無需儲存型別碼
          子類根據工廠函數指定的型別碼而建立
          子類有函數返回硬式編碼型別碼
          父類提供一個用於返回硬式編碼型別碼的抽像函數
          各子類實現返回寫入程式碼型別碼的抽像函數返回的寫入程式碼常量值不同

 

以範圍取代子類 Replace Subclasses with Fields

源類情況:子類返回硬式編碼常量值(其實也是型別碼)
          父類提供抽像函數
          各子類的唯一差別只是返回常量值不同
重構結果:在父類中儲存的常量值(其實也是型別碼)
          子類被全部刪除
          父類中提供以子類名字命名的工廠函數
          工廠函數可以建立儲存了舊子類常量(型別碼)的對象(根據型別碼對應原來的子類)

 

感覺樣本只是一個聲明了型別碼的靜態變數,另一個直接寫入程式碼而已,沒其它區別,而且重構結果直接硬式編碼工廠函數,也可以重構為“聲明型別碼的靜態變數”,感覺真是一樣了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.