我有兩個類 - 在這種特殊情況下MVC - 控制 - 有一個共同的控制器行動(將從JavaScript調用JSON行動)。由於代碼重複,我想將此操作放在父控制器類中。我們已經有了一個控制器基類,它繼承自Controller並用作6個其他控制器的基本類,具有通用功能。我的JSON操作實際上僅適用於2個控制器,所以我認爲將JSON操作放入其他6個控制器已使用的基本控制器中並不是一個好主意。下面是現有的類層次結構圖:我應該如何封裝我的MVC-Action以避免代碼重複?
Existing Controller class hierarchy
我應該在哪裏把我的JSON的行動,以避免代碼重複?我的想法是繼承ControllerBase類 - 讓我們說ControllerBaseExtended - 並把我的JSON動作放在這裏。所以現在,我的2個控制器可以繼承ControllerBaseExtended而不是ControllerBase。這是類層次結構會是什麼樣子底:
Final Controller class hierarchy
有沒有更好的辦法來解決這個問題呢?
我想我會嘗試使用這個組合解決方案,而不是繼承。這兩個控件的操作是相同的,但操作的結果來自Service對象。此服務對象是特定於控制器的。所以我認爲現在問題轉到服務/存儲庫層。 –