Принципиальная разница DI и SL в моменте создания зависимостей.
В DI при создании сервиса создаются и зависимости (если не созданы ранее).
В SL в общем случае при создании сервиса зависимости не создаются. Создание зависимости происходит только при необходимости, в методе get. Это позволяет здорово сэкономить время/память/другие ресурсы.
SL используется, когда нужно использовать один из множества однотипных альтернативных сервисов. Например, когда нужно отправить сообщение пользователю по одному из множества возможных каналов: email, sms, slack, telegram, etc.
В DI при создании сервиса создаются и зависимости (если не созданы ранее).
В SL в общем случае при создании сервиса зависимости не создаются. Создание зависимости происходит только при необходимости, в методе get. Это позволяет здорово сэкономить время/память/другие ресурсы.
SL используется, когда нужно использовать один из множества однотипных альтернативных сервисов. Например, когда нужно отправить сообщение пользователю по одному из множества возможных каналов: email, sms, slack, telegram, etc.