2009-02-08 46 views
3

我記得在某個地方看到了一場關於這個問題的爭論,並且我正在考慮刪除一個基礎對象,即我正在使用的系統中的每個業務對象都從中繼承。它包含一些屬性,一些數據庫邏輯和一些構造函數邏輯。無處不在的基礎對象是否具有反模式?

這是一個反模式,還是陪審團仍然出局?有一個基礎合同可以繼承,這將需要在每個對象中完成一定數量的樣板編碼嗎?

編輯:我喜歡dsimcha和感覺它反映了很好的問題,我還是很高興聽到任何進一步的答案

+0

我認爲這很大程度上取決於您的情況以及您對以下內容感興趣的宣傳。 – BobbyShaftoe 2009-02-08 05:17:41

+0

太過真實,我仍然試圖去感受辯論 – johnc 2009-02-08 05:20:02

回答

2

拇指的標準規則是使用繼承只爲用戶提供靈活性如果你想重用其他類的代碼,可以使用組合。但是,只要你沒有違反Liskov Substitution Principle這可能不是太糟糕。寫大量的樣板文件本身也是一件壞事,因爲它掩蓋了代碼中發生實際行爲並且是反DRY的部分。但是,如果你違反了Liskov替代原則,那麼這絕對不是個好主意。

+0

非常好的一點 - Liskov的確看起來是 – johnc 2009-02-08 05:21:20

1

沒有什麼是真空中的反模式。你的'夏娃班'是否會給你帶來問題?您希望從刪除它有什麼好處?詢問some standard list of anti-patterns是否有助於識別實際問題。

2

我也想明白,我可能會遇到什麼問題,知道或者應當知道的

一個潛在的問題是,如果你使用多重繼承:子類則繼承了「夏娃」的兩個實例類......這就是爲什麼C++支持所謂的虛擬繼承。

這是一個常用的習慣用法:例如.Net中的所有東西都來自System.Object ...和/或所有COM對象實現IQueryInterface接口。

相關問題