2015-08-13 31 views
0

我有一種情況,即前任創建了一個類,該類設計用於處理添加到數據庫的Note實體的創建,以記錄由系統執行的記錄動作網站。尋找重構大類的最佳方式

目前,這個類已經被分解爲幾個CreateXYZNote方法,它們使用一個枚舉來表示一個特定的筆記類型,以及一個驅動該地區的模型實例。

我的問題是,有很多類型的筆記,每個筆記僅用於整個系統的一個或兩個地方。每種方法都很龐大,包含少量的通用代碼,並且具體內容(例如筆記的文本內容)被保存在一系列基於枚舉的開關語句中。很難找到與特定筆記有關的代碼,而且目前很難維護,而且隨着時間的推移,隨着新類型的筆記進入系統,它只會越來越多。

有沒有人有任何建議或模式可以幫助這種情況?

我能想到的最簡單的解決方案是,我有一組配置文件作爲一個字典(由枚舉值控制),它定義了標題,描述,分類等等,課程只是查找這些價值觀和創建筆記的一種手段,但它只是覺得我將問題轉移到另一個地方而不是解決問題。

回答

2

您可以使用具有INote Create(NoteType type)方法的NoteFactory。工廠可能依賴字典NoteType鍵入的字典,工廠使用該字典查找並返回相應的Note。這樣您可以避免使用非OCP switch聲明。

工廠可以注入字典,使用IoC容器在這裏幫助,或者你可以在構造函數中創建字典。

+0

絕對聽起來像一個不錯的選擇。就像它將封裝該創建邏輯並將其從現有類中的其餘註釋邏輯中取出一樣。 –