2011-01-06 121 views
1

在設計階段,我有一個基類和一個派生類。基類將保持一個,但許多派生類將繼承它。因此,將來對派生類進行更改的代價非常高,而且我正在尋找最佳設計來防止這種情況發生。設計基類時的繼承策略

事實上,派生類只需要幾個方法來覆蓋(如果需要),但它很容易揭示更多細節。

我的問題是關於未來可擴展的政策。

我可以最小化派生類的繼承方法/屬性,並在需要時在下一個版本中顯示更多,而不需要對派生類進行任何更改?

或者我應該揭示未來派生類可能使用的任何東西,並讓他們選擇是否需要它們?

感謝

回答

1

您可以在不改變問題從私人更多的方法和屬性在以後的保護。唯一的規則是現有的受保護成員永遠不會再被私有

2

現在我肯定會盡量減少受保護方法的數量。在一個班的開發/設計過程中,很難預測未來,太多的事情會發生變化,所以最好的辦法是保持它simple,併爲你所知道的做出最好的設計現在不是什麼可能或可能需要在一些在未來的時間。

0

除了其他人發佈的內容之外,您還需要考慮誰是您的基類的目標受衆。它們是想要由客戶或其他外部消費者擴展的API或框架的一部分,還是完全在您自己的控制之下(即,只有您將實現派生)?

根據答案的不同,您可能需要仔細考慮所公開的基類 - 設計一個好的,靈活的繼承方案可能很困難。

+0

沒有API,它完全在我的控制之下。派生類也實現了一個接口,當然也由基類實現。 – Xaqron 2011-01-06 04:17:12