關于這個問題,下面是一些同仁的觀點:
觀點一:(單例)
單例模式比靜態方法有很多優勢:
首先,單例可以繼承類,實現接口,而靜態類不能(可以集成類,但不能集成實例成員);
其次,單例可以被延遲初始化,靜態類一般在第一次加載是初始化;
再次,單例類可以被集成,他的方法可以被覆寫;
最后,或許最重要的是,單例類可以被用于多態而無需強迫用戶只假定唯一的實例。舉個例子,你可能在開始時只寫一個配置,但是以后你可能需要支持超過一個配置集,或者可能需要允許用戶從外部從外部文件中加載一個配置對象,或者編寫自己的。你的代碼不需要關注全局的狀態,因此你的代碼會更加靈活。
觀點二:(靜態方法)
靜態方法中產生的對象,會隨著靜態方法執行完畢而釋放掉,而且執行類中的靜態方法時,不會實例化靜態方法所在的類。如果是用singleton, 產生的那一個唯一的實例,會一直在內存中,不會被GC清除的(原因是靜態的屬性變量不會被GC清除),除非整個JVM退出了。這個問題我之前也想幾天,并且自己寫代碼來做了個實驗。
觀點三:(
Good!)
由于DAO的初始化,會比較占系統資源的,如果用靜態方法來取,會不斷地初始化和釋放,所以我個人認為如果不存在比較復雜的事務管理,用singleton會比較好。個人意見,歡迎各位高手指正。
拋磚引玉,請不吝賜教!
--------------------
WE準高手
posted on 2008-01-22 10:46
大衛 閱讀(20167)
評論(11) 編輯 收藏 所屬分類:
Java