4
回答
java使用单例还是使用static方法,那种更合适呢
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

最近在学习 effective java 里面有单例部分,想到自己平时写的很多工具类都使用static的方式,如果改成单例,好像也没什么毛病。

想请教一下,单例和static分别在什么场景下使用,更合理呢

举报
qwzh110
发帖于5天前 4回/392阅
共有4个答案 最后回答: 5天前

static作为一个静态方法,不管你用不用都占用这个位置,在加载类的时候就被加载到内存中。
如果,通过单例的途径,定义一个方法, 那只有在用这个实例调用方法的时候,方法才被加入到内存中,当对象不用的时候,gc会将方法回收,省内存,效率高了很多,
所以,以前写的static方法,建议用单例的方式进行改正。

参考:JAVA Static方法与单例模式的理解 

没必要改,别被理论看呆了。最简单的,static 和 单例,哪种好理解更直观?so,程序是给人看的,能采用基本最直观的方式,就不要去折腾事儿。在我印象里,只有加载资源/需要初始化并比较慢的类,才去使用单例,其它情况,谁会在意单例相比 static 剩下的那点内存啊,别扯了。

完全不同意前两位的观点,我认为:

单例可以有多个方法,每个方法都可能依赖单例的状态,这些状态是实例化时设置的并且不可更改。

而一些工具类中的静态方法只是纯函数,不会依赖某些实例变量。

单例:多方法,有状态

静态方法:工具,无状态,纯函数

顶部