概念:本文中的「使用委派代替繼承」是指在根本沒有父子關係的類中使用繼承是不合理的,可以用委派的方式來代替。
如下**所示,child 和sanitation (公共設施)是沒有邏輯上的父子關係,因為小孩不可能是乙個公共設施吧!所以我們為了完成這個功能可以考慮使用委派的方式。
namespace lostechies.daysofrefactoring.replaceinheritance.before重構後的**如下,把sanitation 委派到child 類中,從而可以使用washhands這個方法,這種方式我們經常會用到,其實ioc也使用到了這個原理,可以通過構造注入和方法注入等。}public class child : sanitation
}
namespace lostechies.daysofrefactoring.replaceinheritance.after總結:這個重構是乙個很好的重構,在很大程度上解決了濫用繼承的情況,很多設計模式也用到了這種思想(比如橋接模式、介面卡模式、策略模式等)。}public class child
public child()
public string washhands()
}}
31天重構學習筆記8 使用委派代替繼承
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都在使用,只是我們沒有專門把它...
31 天重構學習筆記8 使用委派代替繼承
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...
31 天重構學習筆記8 使用委派代替繼承
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱 sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...