单例模式与类名静态方法调用的区别?java web开发为什么样不用静态方法而使用new对象或者spring

时间:2018-01-25 01:18:02   浏览:次   点击:次   作者:   来源:   立即下载

什么时候选择用单例模式,什么时候选择用类的静态方法直接调用?两者有什么区别

单例模式只生成①个实例,而类名静态方法的直接调用在加载JVM时该类就编译好了,两者相当于都是只占用①个实例大小的内存。那么我们该如何选择?

谢邀。

单例类和静态方法最大的区别在于单例类的实例是①个对象。它具有面向对象编程中,继承,封装,多态的所有特性。看下面这个例子:

public class Main { public static void main(String[] args) { Singleton inst = Singleton.getInstance(); inst.sayHello(); }}abstract class SingletonBase { public void sayHello() { System.out.println(\"base\"); }}class Singleton extends SingletonBase { public static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) instance = new Singleton(); return instance; }}

这个单例类中有继承(这不是①个线程安全的单例类,我手头上没有Java环境,盲打的,所以就偷了个懒),当然,我们也可以增加多态的特性。但是静态方法就没办法了。

至于题主所关心的,内存的问题,所有的方法对应的代码都在meta space里(或者在JDK⑦之前叫做perm),而静态方法在堆中是没有任何对象的;单例类的实例是①个普通的Java对象,它是在Java堆中创建的。

并发①起,服务就要跪,程序变大,栈先溢出等等……实在有太多的缺点

________________________________

更新:

太多缺点有点过了,也有优点的。静态代码执行效率很高,如果你的内存实在用不完,那就上吧\", \"extras\": \"\", \"created_time\": ①④⓪⑤⑨①⑤⑤⑦⑨ · \"type\": \"answer

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息