Должен ли использовать инверсию зависимостей?

Angular известен принципом DI. Например, внедрение конкретной службы, которая делает запросы к API.

Класс UsersService {}

Следует ли использовать принцип инверсии зависимостей для всех сервисов? И не подставлять конкретную реализацию. а абстракция интрфейс.

Конструктор (private user: UserServiceAbstract) {}
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
DI предоставляет возможность подпихивать что угодно :)

В принципе если действительно надо, то можно использовать абстрактный класс в роли токена, провайдить по нему конкретные реализации и использовать в потребители.

В самом Angular это сплошь и рядом, например ChangeDetectorRef, Injector, Renderer2, ViewContainerRef, TemplateRef, DomSanitizer, UrlHandlingStrategy и много других это абстракции, за которыми Angular прячет свои текущие реализации и они могут меняться в разных версиях, сохраняя интерфейс.

Но это не значит что такое требуется везде. Если вы пишете либу общего назначения, которая предоставляет свои сервисы, то еще уместно, а для конкретного сингла UserService это будет чересчур.
Все равно всегда можно скормить, если нужно, нижестоящему компоненту другой UserService подменив объект в инжекторе, di позволяет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
08 мар. 2021, в 10:02
75000 руб./за проект
08 мар. 2021, в 10:00
700 руб./за проект
08 мар. 2021, в 08:37
3000 руб./за проект