1
我正在使用具有兩個大型繼承樹的數學軟件框架。這在概念上受到啓發:一個是用於一般功能(它們繼承自Func
),另一個用於歸一化概率密度函數(它們繼承自Pdf
)。具有不同繼承性的同一類的版本
但是,有一些原則上應該存在於兩個層級中的類,例如Gauss
函數。
目前,有一個GaussFunc
和GaussPdf
類具有相同的源代碼實現方式中,除了類名,並從分別Func
和Pdf
,繼承。
我想通過擺脫源代碼的第二個副本來改善這種情況。我可以想出幾種方法來解決這個問題,而不會弄亂整個繼承樹,例如使用預處理器宏和#include
語句,或者可能是模板,但我不確定在這種情況下做什麼是最可取的事情情況。
任何有關如何在這種情況下進行的建議都非常受歡迎。但是,請注意,我無法重構整個軟件項目以先驗地避免此問題(這當然是最爲理智的方法,但在我的工作時間範圍內不可能,並且不在我允許決定的範圍內關於)。
這聽起來像繼承的濫用。很難說沒有源代碼。 – imreal
聽起來像Pdf不應該是單獨的層次結構,而是主層次結構的某些適配器(基於模板?) – Swift
@imreal:源代碼的哪些細節會很有趣?整個課程的源頭是〜2000行,所以粘貼這一切都超出了我所假設的範圍:-) – carsten