java - 为什么使用单例而不是静态方法?

标签 java design-patterns singleton

对于这些关于帮助程序/实用程序类的简单问题,我从来没有找到好的答案:

  • 为什么我要创建一个单例(无状态)而不是使用静态方法?
  • 如果对象没有状态,为什么还需要对象实例?

最佳答案

通常,单例用于向应用程序引入某种全局状态。 (老实说,这通常不是真正必要的,但这是另一个话题。)

但是,在某些极端情况下,即使是 无状态 单例也是有用的:

  • 您希望在可预见的将来使用 state 扩展它。
  • 出于某些特定的技术原因,您需要一个对象实例
    示例:C# lock 或 Java 的同步对象同步语句。
  • 您需要继承,即,您希望能够使用相同的接口(interface)但使用不同的实现轻松地将您的单例替换为另一个。
    示例:Toolkit.getDefaultToolkit() Java 中的方法将返回一个单例,其确切类型取决于系统。
  • 您希望 引用相等 sentinel value .
    示例:C# 中的 DBNull.Value

关于java - 为什么使用单例而不是静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2765060/

相关文章:

design-patterns - 害怕使用依赖注入(inject)框架

javascript - 传递对象的成员函数时绑定(bind) "this"

javascript - 我真的需要一个单例吗?

c# - ASP.NET 多线程是否影响 Structuremap 单例类?

java - 使用 JPanel 创建棋盘

java - Flexjson 或 Gson : Protect object references after object serialization

java - SQLite 数据库读取初始化

design-patterns - `Artifacts` 在统一流程中实际上意味着什么?

java - 如何返回 "stylize"JSON API?

c# - 设计模式中枚举的替代方案