Я 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.
Кроме того, я вижу много вопросов, связанных с этим, но не могу найти точное совпадение, в котором задавался бы тот же вопрос. Если вы видите, что это действительно ложный вопрос, укажите его мне, и я сам закрою этот вопрос (пожалуйста, не ставьте его закрытым!).