2010-07-19 53 views
2

好吧即時將要保持這非常簡單。對於類似於應用程序中的db處理程序,哪種方法最適合:Singleton,Registry模式,靜態配置類或配置文件。單處理器,註冊表或配置文件的數據庫處理程序

我一直在閱讀有關這方面的信息,似乎有很多矛盾的想法。

我明白,這不會是一個適合所有解決方案,但通常這種類型的問題的最佳做法是什麼。

回答

1

永遠不要使用Singleton,這只不過是一個響亮的巨大的全局變量,它的初始化綁定了你的進程的生命週期而不是它管理的資源。

你想要的是一個注入到每個依賴它的範圍內的對象,換句話說,你正在尋找的模式是依賴注入。

對於最簡單的應用程序,只需使用命令行參數和配置對象即可。

對於稍微複雜的應用程序,允許從配置文件創建默認配置對象,然後通過命令行參數進行修改。

對於中等複雜程度的應用程序,請與您的平臺/語言/操作系統原生註冊表工具集成以提供默認值。

對於生產應用程序,使用IoC-DI容器,並將config/db/etc對象外部構建到您的應用程序類並在運行時注入。

關鍵是要避免擁有一個進程靜態配置對象,因爲這會干擾測試,軟重啓以及更難以遷移到更靈活的配置方法。

+1

這裏有個小提示......在討論設計模式時,您可能想避免使用「never」一詞。例如,你提到的有關Singleton生命週期的問題在許多PHP Web應用程序中確實不是什麼大問題。 – 2010-07-20 09:03:47