静态方法适用于没有 关联状态的 事物 。 一些工厂方法,“纯粹功能”方法(例如
Math.sin和)都是完全可接受的静态方法。
java.lang.Math并
java.util.Collections有许多可以完全接受的静态方法的精美示例。
幸运的是,这些方法不需要依赖注入,也不需要与之交互。他们并非异常难以测试。他们没有需要模拟或任何东西的依赖项。
另一方面,静态或带有关联静态的静态方法完全是邪恶的。那 是 一种反模式。
当且仅当它总是在等效输入上返回等效输出时,它通常有助于将方法定义为无状态的(因此是合法的静态方法)。这清楚地表明,例如数据库查询和文件系统I /
O使方法成为有状态的,因为它们的输出将根据文件系统或数据库中的内容而有所不同。



