當我遇到這個問題時answer was proposed to another question I asked。假設我有一個基類我應該如何積極地繼承以保持DRY?
public abstract class BaseClass {}
有一些體面的派生類 - 比方說超過六打。大多數這些派生類的不共享相似性超出了他們的從基類繼承的東西,但他們兩個都像這樣
public class OneOfMyDerivedClasses : BaseClass
{
public string SimilarProperty {get; set;}
//Other implementation details
}
public class AnotherOneOfMyDerivedClasses : BaseClass
{
public string SimilarProperty {get; set;}
//Other implementation details, dissimilar to those in OneOfMyDerivedClasses
}
就是這樣的相似性。這是唯一的相似之處,任何子類共享超越從BaseClass
繼承。在我的實際應用中,我用界面IHaveSimilarProperty
解決了這個問題,因爲我所關心的只是一個對象實現了所使用的接口。但因爲我有重複,我應該定義這兩個派生類繼承中間基類,即
public abstract IntermediateBaseClass : BaseClass
{
public string SimilarProperty {get; set;}
}
我也可以結合這兩種方法,裝潢中間階層,界面...
所以我的問題是關於這是否足夠的重複,以保證OOP最佳實踐方面的中間基類。我是否應該積極消除所有重複,或者我應該採取更務實的方法?如果是後者,那麼推動我選擇另一種方法的經驗法則是什麼?
在這種情況下你需要多態嗎? – Matthew
我認爲這將主要是基於意見而沒有具體的例子。就我個人而言,我的設計決定基於對象所代表的內容而非其屬性。這是應該改變你的代碼更適應性。 – Liath
我想說,不,這種情況不保證另一個基類。如果使用接口符合要求,那麼最好不要過度設計。 – Zach