![]() |
1
15
从严格的运行时性能的角度来看,这种差异实际上可以忽略不计。两者的主要区别在于“静态”生命周期链接到类加载器,而对于单例生命周期则是常规的实例生命周期。通常,最好远离类加载器业务,避免一些棘手的问题,尤其是在尝试重新加载Web应用程序时。 |
![]() |
2
16
如果需要存储任何状态,我将使用单例,否则将使用静态类。实例化某个东西是没有意义的,即使是单个实例,除非它需要存储某个东西。 |
![]() |
3
11
静态不利于扩展性,因为静态方法和字段不能被子类扩展或重写。 这对单元测试也不好。在一个单元测试中,您不能防止不同测试的副作用溢出,因为您不能控制类加载器。在一个单元测试中初始化的静态字段将在另一个单元测试中可见,或者更糟的是,并发运行测试将产生不可预知的结果。 当少量使用时,singleton通常是一个不错的模式。我更喜欢使用DI框架,让它为我管理我的实例(可能在不同的范围内,如guice中)。 |
![]() |
4
3
如果我最初的帖子是正确的理解,并且太阳报的讨论是准确的(我认为可能是这样),那么我认为你必须在清晰性和表现之间做出权衡。 问问自己这些问题:
|
![]() |
5
3
根据我的经验,唯一重要的是哪一个更容易在单元测试中模拟。我总觉得单挑更容易,也更自然。如果您的组织允许您使用jmockit,那么这并不重要,因为您可以克服这些问题。 |
![]() |
6
0
这个讨论有帮助吗?(我不知道链接到另一个编程论坛是否是禁忌,但我宁愿不引用整个讨论。) Sun Discussion on this subject 结论似乎是,尽管静态方法在技术上更有效,但在大多数情况下,它并没有产生足够大的差异。 |
![]() |
7
0
写一些代码来衡量性能。答案将取决于JVM(Sun的JDK的性能可能与Jrockit不同),并且VM会标记应用程序使用的标志。 |
![]() |
Vedant · 如何解决python啦啦队长问题?[已关闭] 3 年前 |
![]() |
cobby · 在战略模式中使用工厂模式? 3 年前 |
![]() |
Nobody · Java中带while循环的三角形模式 3 年前 |
![]() |
Eduard Stefanescu · 如何在层之间传输异常? 7 年前 |
![]() |
D. Schreier Talha Noyon · 对于目录中的每个类 7 年前 |
![]() |
Tanvi Jaywant · 如何重载类 7 年前 |