我工作的一個項目具有以下(非常簡單的)結構:接口修復遺傳混亂?
BaseClass
SubClassA : BaseClass
SubClassB : BaseClass
有一個UI(有很多邏輯的),它採用SubClassA
,然後將其保存到這需要BaseClass
另一個組件作爲參數,但立即將參數轉換爲SubClassB
。這在UI傳入SubClassA
時失敗。
UI:
MyComponent.Save(subClassA)
Component:
Save(BaseClass baseClass)
{
SubClassB subClassB = (SubClassB)baseClass;
...
目前執行的UI創建SubClassB的實例,並通過跨 - 但它會導致大量的代碼,如
SubClassB.Property1 = SubClassA.Property1a
我正在考慮創建一個2子類將實現的通用接口。這將是很多工作,但慢慢地我認爲我可以將目前非常深的層次結構扁平化。重構UI或組件以使用其他子類型與結構不同(儘管許多字段映射)一樣多。界面的方法是否正確?我覺得可能有一些我錯過了。
我看不到接口會在這裏幫助...爲什麼不修復保存方法?它應該將SubClassB作爲參數或者應該正確支持BaseClass。 – LightStriker
@LightStriker - 如果我更新保存以獲取SubClassB,我仍然有從UI轉換到subclassB實例的問題。不幸的是,基類沒有太多的子類的細節,我的想法是一個接口將是跨多個組件的更一致的交互的起點(繼承是一個混亂...) – NDJ