我不是單身人士的仇敵,但我知道他們受到虐待,因此我想學會避免在不需要時使用它們。需要幫助避免使用單身人士
我正在開發一個跨平臺的應用程序(Windows XP/Vista/7,Windows Mobile 6.x,Windows CE5,Windows CE6)。作爲該過程的一部分,我將代碼重新分解爲單獨的項目,以減少代碼重複,從而有機會解決初始系統的錯誤。
正在分離的應用程序中的一個這樣的部分非常簡單,它是一個配置文件管理器。這個項目負責存儲配置文件。它有一個Profile
類,其中包含應用程序所有部分使用的一些配置數據。它有一個ProfileManager
類,其中包含Profiles
。 ProfileManager
將在硬盤上讀取/保存Profiles
作爲單獨的XML文件,並允許應用程序檢索並設置「活動」Profile
。簡單。
在第一個內部構建中,GUI是反模式SmartGUI。這是一個沒有MVC/MVP的WinForms實現,因爲我們希望它能夠更快地工作,而不是很好的設計。這導致ProfileManager
是一個單身人士。這在應用程序的任何地方都是如此,GUI可以訪問活動的Profile
。
這意味着我可以根據需要去ProfileManager.Instance.ActiveProfile
檢索系統不同部分的配置。每個GUI還可以對配置文件進行更改,因此每個GUI都有一個保存按鈕,因此它們也都可以訪問ProfileManager.Instance.SaveActiveProfile()
方法。
我在這裏看到使用單身人士沒有錯,並且因爲我沒有看到任何錯誤,但知道單身人士並不理想。 有沒有更好的方法來處理?應該將ProfileManager的實例傳遞給每個Controller/Presenter?當ProfileManager被創建時,是否應該創建其他核心組件並在配置文件發生更改時註冊到事件。這個例子非常簡單,可能是許多系統的一個共同特徵,所以認爲這是學習如何避免單身人士的好地方。
P.s.我不得不針對Compact Framework 3.5構建應用程序,這限制了很多可以使用的.Net Framework類。
我可能會被困在我以前的習慣中,但我認爲這是應該使用Singleton的一個很好的例子。 –
這實際上聽起來像是單身實例的理想情況。 – msarchet
感謝所有的答案,它似乎是一個適合使用Singleton的地方。工廠/依賴注入的反饋將被考慮進來,但是由於這個應用程序將在後臺運行,我可能會將其作爲Singleton用於簡單性和性能。 – JonWillis