靜態類和單例模式區別

觀點一:(單例 )
單例模式比靜態方法有不少優點:
首先,單例能夠繼承類,實現接口,而靜態類不能(能夠集成類,但不能集成實例成員);
其次,單例能夠被延遲初始化,靜態類通常在第一次加載是初始化;
再次,單例類能夠被集成,他的方法能夠被覆寫;
最後,或許最重要的是,單例類能夠被用於多態而無需強迫用戶只假定惟一的實例。舉個例子,你可能在開始時只寫一個配置,可是之後你可能須要支持超過一個配 置集,或者可能須要容許用戶從外部從外部文件中加載一個配置對象,或者編寫本身的。你的代碼不須要關注全局的狀態,所以你的代碼會更加靈活。

觀點二:(靜態方法 ) 靜態方法中產生的對象,會隨着靜態方法執行完畢而釋放掉,並且執行類中的靜態方法時,不會實例化靜態方法所在的類。若是是用singleton,   產生的那一個惟一的實例,會一直在內存中,不會被GC清除的(緣由是靜態的屬性變量不會被GC清除),除非整個JVM退出了。這個問題我以前也想幾天,並 且本身寫代碼來作了個實驗。

觀點三:(Good! )
因爲DAO的初始化,會比較佔系統資源的,若是用靜態方法來取,會不斷地初始化和釋放,因此我我的認爲若是不存在比較複雜的事務管理,用 singleton會比較好。我的意見,歡迎各位高手指正。
spa

相關文章
相關標籤/搜索