Я читал «Шаблоны проектирования» от Gamma et al. У меня вопрос относительно метода шаблона по сравнению с внедрением зависимостей.
Используя шаблонный метод, вы создаете «шаблонные» классы с политиками, которые предоставляют альтернативы для необходимых действий или вычислений. Таким образом, вместо того, чтобы выбирать одну политику из нескольких альтернатив и кодировать эту политику в классе, вы позволяете пользователю класса указать альтернативу, которую он хочет использовать.
Для меня все это звучит очень разумно. Но я натолкнулся на концептуальную кирпичную стену.
Если вы создаете экземпляр класса с объектом политики, объект политики должен реализовывать абстрактный интерфейс. Затем программист может написать различные политики, которые все компилируются в класс без ошибок, поскольку политики реализуют интерфейс. Класс, использующий политики, кодируется для интерфейса политики, а не для реализации.
Если вы собираетесь определить абстрактную IPolicy
для этих объектов политики, почему бы просто не использовать Dependency Injection и передать IPolicy
при построении?
есть ли какой-либо свет на то, почему вы предпочитаете шаблонный метод инъекции зависимостей?