Во-первых, DI и Singleton являются шаблонами проектирования.
Зависимость инъекций:
DI - это способ внедрения зависимых объектов в ваше приложение.
Синглтон:
Создайте один-единственный экземпляр объекта.
Источник: Дизайн выкройки-синглтона
Может кто-нибудь сказать мне, каковы преимущества и недостатки использования одного из них по сравнению с другим в приведенном выше сценарии и как правильно выбрать ??
DI заботится о создании, настройке и внедрении объектов. Это означает, что DI также может создавать, настраивать и вводить объект Singleton . DI полезен, когда вы хотите сделать создание объекта внешним, слабо связанным и легко обслуживаемым.
Singleton предоставляет только один экземпляр объекта и доступ к нему по всему миру. Этот объект также может быть введен в приложение с помощью DI . Это полезно, когда вам нужен только один объект, требуется ленивая инициализация (создание при первом использовании) и глобальный доступ.