Когда вы используете шаблон стратегии, вы хотите, чтобы другие классы зависели от интерфейса, а не от конкретной стратегии. Один из способов сделать это - внедрить конкретную стратегию в класс, который использует ее в качестве интерфейса, вместо того, чтобы класс понимал, как создать соответствующую стратегию. Вот тут и вводится IoC / Dependency Injection.
Идея состоит в том, что у вас есть какая-то конфигурация или класс решений, который определяет, какие стратегии использовать. Это может быть инфраструктура IoC, но это необязательно. Этот класс отвечает за настройку других ваших классов с соответствующей стратегией, основанной на состоянии системы или конфигурации. Конкретная стратегия создается и внедряется через конструктор или свойство settor, и, таким образом, «контроль» над тем, какой класс стратегии создается, «инвертируется» - это не делается классом в зависимости от него, а скорее извне.