靜態類和單例模式區別


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

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

觀點三:(Good! )
由於DAO的初始化,會比較占系統資源的,如果用靜態方法來取,會不斷地初始化和釋放,所以我個人認為如果不存在比較復雜的事務管理,用 singleton會比較好。個人意見,歡迎各位高手指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM