java使用单例与使用static方法的对于和个人理解

Posted 愿所有人都能被这世界温柔相待

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用单例与使用static方法的对于和个人理解相关的知识,希望对你有一定的参考价值。

最近在重构项目中的老模块,打算引入spring boot对原有项目自己封装的依赖注入模块进行替换。项目中存在大量的工具类,大都是使用static方法编写的,比如时间工具类用于格式化日期,编码工具类用于编码解码。研究了下是否有必要对这些常量方法的类进行单例重构。

首先要说明的是,两种方式都是可以实现功能的,只在一些特殊的场景会有些区别。除非比较感兴趣,一般是没必要太深究

区别和特点:

单例:有实例,有状态

静态方法:无实例,无状态,纯函数

静态方法实现方式的优点是突出了一个简单粗暴,不实例对象,并且由于静态方法是在编译期静态绑定的,性能会有一点提升。对于大部分业务无关的工具类,确实比较适合这种场景。

缺点也很明显,由于不实例化对象,也就不遵守面向对象的设计。什么高内聚低耦合,单元测试,实现替换,AOP代理等等这些面向对象的优势,就都没有了,相较与面向对象会更加难以应对变更。

想用AOP的话,还是使用单例吧

以上是关于java使用单例与使用static方法的对于和个人理解的主要内容,如果未能解决你的问题,请参考以下文章

@Component单例与并发

如何使用 Swift 3 将单例与 Alamofire 一起使用?

Java并发笔记——单例与双重检测

单例与原型 JdbcTemplate

Swift单例与静态属性/方法

并发编程:单例与多线程