Статические методы - это анти-шаблон DI?

Я 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.

Кроме того, я вижу много вопросов, связанных с этим, но не могу найти точное совпадение, в котором задавался бы тот же вопрос. Если вы видите, что это действительно ложный вопрос, укажите его мне, и я сам закрою этот вопрос (пожалуйста, не ставьте его закрытым!).

33
задан IAmYourFaja 20 February 2012 в 20:05
поделиться