java使用单例与使用static方法的对于和个人理解
Posted 愿所有人都能被这世界温柔相待
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用单例与使用static方法的对于和个人理解相关的知识,希望对你有一定的参考价值。
最近在重构项目中的老模块,打算引入spring boot对原有项目自己封装的依赖注入模块进行替换。项目中存在大量的工具类,大都是使用static方法编写的,比如时间工具类用于格式化日期,编码工具类用于编码解码。研究了下是否有必要对这些常量方法的类进行单例重构。
首先要说明的是,两种方式都是可以实现功能的,只在一些特殊的场景会有些区别。除非比较感兴趣,一般是没必要太深究
区别和特点:
单例:有实例,有状态
静态方法:无实例,无状态,纯函数
静态方法实现方式的优点是突出了一个简单粗暴,不实例对象,并且由于静态方法是在编译期静态绑定的,性能会有一点提升。对于大部分业务无关的工具类,确实比较适合这种场景。
缺点也很明显,由于不实例化对象,也就不遵守面向对象的设计。什么高内聚低耦合,单元测试,实现替换,AOP代理等等这些面向对象的优势,就都没有了,相较与面向对象会更加难以应对变更。
想用AOP的话,还是使用单例吧
以上是关于java使用单例与使用static方法的对于和个人理解的主要内容,如果未能解决你的问题,请参考以下文章