静态方法对编程语言是否真的必要?

时间:2012-10-17 16:15:37

标签: oop static-methods

编程语言(如C#或Java)具有静态方法,尽管面向对象很多。

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

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

  • main main -method的目的是创建程序的第一个正在运行的线程并启动它。所以这也许只是一个派生自Thread类的对象
  • 记录器:记录器实现通常使用静态方法。我没有看到这一点,因为我可能想用另一个接口用相同的接口交换记录器
  • 数学:数学函数看起来似乎是静态方法的最佳选择,但是在某些情况下,您可能希望透明地将数学库交换为另一个(即如果您如果精度对于您的应用程序并不重要,那么您可能需要在sin()函数上获得更多性能,您可能希望使用具有更快,更精确算法的实现。
  • 单身人士:被许多人认为是不好的做法。如果只需要一个实例,您可能会考虑实际只创建一个实例。

那么,静态方法真的绝对需要什么呢?

1 个答案:

答案 0 :(得分:1)

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

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