使用委派代替繼承

2022-03-02 15:18:29 字數 655 閱讀 4033

概念:本文中的「使用委派代替繼承」是指在根本沒有父子關係的類中使用繼承是不合理的,可以用委派的方式來代替。 

如下**所示,child 和sanitation (公共設施)是沒有邏輯上的父子關係,因為小孩不可能是乙個公共設施吧!所以我們為了完成這個功能可以考慮使用委派的方式。

namespace lostechies.daysofrefactoring.replaceinheritance.before

}public class child : sanitation

}

重構後的**如下,把sanitation 委派到child 類中,從而可以使用washhands這個方法,這種方式我們經常會用到,其實ioc也使用到了這個原理,可以通過構造注入和方法注入等。

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,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都 在使用,只是我們沒有專門...