【发布时间】:2012-03-11 04:13:39
【问题描述】:
我是一名 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。
此外,我看到很多与此类似的问题,但找不到提出相同问题的完全匹配项。如果您发现这确实是另一个问题的骗局,请指出给我,我将自己关闭这个问题(请不要只是关闭投票!)。
【问题讨论】:
标签: java dependency-injection mocking static-methods