1

像 C# 或 Java 这样的编程语言具有静态方法,尽管它非常面向对象。

我知道在很多情况下出于性能或方便的原因使用静态方法,但我不禁想知道是否存在如果不使用静态方法就无法解决的实际编码问题。

我认为这里命名的一些常见情况可能只是“正常”方法,而不是静态方法,例如:

  • mainmain方法的目的是创建程序的第一个运行线程并启动它。所以这也可能只是一个从 Thread 类派生的对象
  • 记录器:记录器实现通常使用静态方法。我没有看到这一点,因为我可能想用相同的界面将一个记录器换成另一个
  • 数学:乍一看,数学函数似乎确实是静态方法的完美候选者,但在某些情况下,您可能希望透明地将数学库交换为另一个数学库(即,如果您需要更多的 sin() 函数性能如果精度对您的应用程序不重要,则可能希望使用更快、精度更低的算法的实现)
  • 单身人士:被许多人认为是不好的做法。如果只需要一个实例,您可能会考虑实际只创建一个实例。

那么,在哪些情况下确实需要静态方法呢?

4

1 回答 1

1

IMO,在定义工厂以创建给定类型的不同子类型的对象时需要静态方法,其中子类型的选择取决于此静态工厂方法的输入并且对客户端隐藏。

您的 Logger 示例实际上属于此类,其中实际记录器是根据所需的包/类决定的(当然,Logger 上的其他工厂方法采用其他参数来决定要返回的适当 Logger 实例)。

于 2012-10-17T16:22:04.323 回答