java使用單例與使用static方法的對於和個人理解


最近在重構項目中的老模塊,打算引入spring boot對原有項目自己封裝的依賴注入模塊進行替換。項目中存在大量的工具類,大都是使用static方法編寫的,比如時間工具類用於格式化日期,編碼工具類用於編碼解碼。研究了下是否有必要對這些常量方法的類進行單例重構。

首先要說明的是,兩種方式都是可以實現功能的,只在一些特殊的場景會有些區別。除非比較感興趣,一般是沒必要太深究

區別和特點:

單例:有實例,有狀態

靜態方法:無實例,無狀態,純函數

靜態方法實現方式的優點是突出了一個簡單粗暴,不實例對象,並且由於靜態方法是在編譯期靜態綁定的,性能會有一點提升。對於大部分業務無關的工具類,確實比較適合這種場景。

缺點也很明顯,由於不實例化對象,也就不遵守面向對象的設計。什么高內聚低耦合,單元測試,實現替換,AOP代理等等這些面向對象的優勢,就都沒有了,相較與面向對象會更加難以應對變更。

想用AOP的話,還是使用單例吧


免責聲明!

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



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