java - Java中的单例模式和静态类有什么区别?

标签 java design-patterns

单例与仅填充静态字段的类有何不同?

最佳答案

几乎每次我编写一个静态类时,我最终都希望我将它实现为一个非静态类。考虑:

  • 可以扩展非静态类。多态性可以节省大量重复。
  • 一个非静态类可以实现一个接口(interface),当您想将实现与 API 分开时,它可以派上用场。

由于这两点,非静态类使得为依赖它们的项目编写更可靠的单元测试成为可能。

然而,单例模式离静态类只有半步之遥。您有点获得了这些好处,但是如果您通过“ClassName.Instance”直接在其他类中访问它们,那么您正在为获得这些好处制造障碍。就像 ph0enix 指出的那样,使用依赖注入(inject)模式会更好。这样,一个 DI 框架可以被告知一个特定的类是(或不是)单例。您可以获得模拟、单元测试、多态性和更多灵 active 的所有好处。

关于java - Java中的单例模式和静态类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532161/

相关文章:

java - 最低循环与中间方法调用

java - 硬编码身份验证更容易调试

c# - 使用 ref 改变部分不可变类的方法设计

c# - 这是一种设计模式吗?如果是这样,它是什么?

java - 传感器校准设计模式

python - 如何将 python 格式字符串与列表中的元素匹配?

java - 加载纹理 LWJGL

java - Java开发人员的Ruby类定义说明

java - java.time.ZonedDateTime 使用什么 MySQL 类型

design-patterns - 表数据网关与 Rowdata 网关有何不同?...需要澄清