Tag: 模拟静态方法

静态方法是DI反模式吗?

我是一名Java开发人员,他开始掌握dependency injection的全部function,我突然意识到没有办法注入静态方法。 所以它让我思考: 静态方法DI反模式? 更重要的是:如果我接受dependency injection,这是否意味着我需要停止编写静态方法? 我问,因为没有办法在unit testing中模拟它们并注入模拟静态,这对我来说是一个巨大的转折点。 编辑 :我知道“包装”和注入现有静态方法的常用方法是这样的: public class Foo { public static void bar() { … } } public interface FooWrapper { public void bar(); } public class FooWrapperImpl implements FooWrapper { public void bar() { return Foo.bar(); } } …但我不是在问如何注入一个现有的静态方法…我问我是否应该完全停止写它们,如果我所有的代码(从这一点开始)都要接受DI的概念。 此外,我看到了许多与此类似的相关问题,但无法找到提出相同问题的完全匹配。 如果你发现它确实是另一个问题的愚蠢,请指出我,我将自己关闭这个问题(请不要只是关闭它!)。