静态方法是否是 DI 的反模式?
2022-09-01 02:38:13
我是一名Java开发人员,他开始掌握依赖注入的全部功能,我突然意识到没有办法注入静态方法。因此,这让我开始思考:静态方法DI是反模式的吗?
更重要的是:如果我要接受依赖注入,这是否意味着我需要停止编写静态方法?我问是因为没有办法在单元测试期间嘲笑他们并注入模拟静态,这对我来说是一个巨大的关口。
编辑:我知道“包装”和注入现有静态方法的常用方法是这样的:
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的概念。
此外,我看到很多与此类似的问题,但找不到提出相同问题的确切匹配项。如果你看到它确实是另一个问题的欺骗,请向我指出它,我会自己关闭这个问题(请不要只是关闭它!