Почему предпочтительнее шаблонный метод, а не внедрение зависимостей?

Я читал «Шаблоны проектирования» от Gamma et al. У меня вопрос относительно метода шаблона по сравнению с внедрением зависимостей.

Используя шаблонный метод, вы создаете «шаблонные» классы с политиками, которые предоставляют альтернативы для необходимых действий или вычислений. Таким образом, вместо того, чтобы выбирать одну политику из нескольких альтернатив и кодировать эту политику в классе, вы позволяете пользователю класса указать альтернативу, которую он хочет использовать.

Для меня все это звучит очень разумно. Но я натолкнулся на концептуальную кирпичную стену.

Если вы создаете экземпляр класса с объектом политики, объект политики должен реализовывать абстрактный интерфейс. Затем программист может написать различные политики, которые все компилируются в класс без ошибок, поскольку политики реализуют интерфейс. Класс, использующий политики, кодируется для интерфейса политики, а не для реализации.

Если вы собираетесь определить абстрактную IPolicy для этих объектов политики, почему бы просто не использовать Dependency Injection и передать IPolicy при построении?

есть ли какой-либо свет на то, почему вы предпочитаете шаблонный метод инъекции зависимостей?

9
задан Micha Wiedenmann 6 March 2018 в 15:01
поделиться