【发布时间】:2012-10-17 16:15:37
【问题描述】:
C# 或 Java 等编程语言具有静态方法,尽管它们非常面向对象。
我知道有很多情况下出于性能或方便的原因使用静态方法,但我不禁想知道是否存在如果不使用静态方法就无法解决的实际编码问题。
我认为这里命名的一些常见情况可能只是“普通”方法,而不是静态方法,例如:
- main:main 方法的目的是创建程序的第一个运行线程并启动它。所以这也可能只是一个从 Thread 类派生的对象
- Loggers:Logger 实现通常使用静态方法。我不明白这一点,因为我可能想用相同的界面将一个记录器换成另一个记录器
- 数学:乍一看,数学函数似乎确实是静态方法的完美候选者,但在某些情况下,您可能希望透明地将数学库交换为另一个数学库(即,如果您需要更高的性能在 sin() 函数上,如果精度对您的应用程序不重要,您可能希望使用更快、精度更低的算法实现)
- 单身人士:被许多人认为是不好的做法。如果只需要一个实例,您可能会考虑只创建一个实例。
那么,在哪些情况下真的绝对需要静态方法?
【问题讨论】:
标签: oop static-methods