Редактировал(а) Alexandr Fokin 2023/01/06 17:11

<
От версии < 1.2 >
отредактировано Alexandr Fokin
на 2020/07/12 19:22
К версии < 4.2 >
отредактировано Alexandr Fokin
на 2020/07/14 10:02
>
Изменить комментарий: Добавлен тег [js]

Комментарий

Подробности

Свойства страницы
Название
... ... @@ -1,1 +1,1 @@
1 -Внедрение зависимостей | Dependency injection
1 +JS Внедрение зависимостей | JS Dependency injection
Теги
... ... @@ -1,1 +1,1 @@
1 -DI
1 +DI|js
Содержимое
... ... @@ -1,0 +1,26 @@
1 +
2 +**Внедрение зависимостей в JavaScript.**
3 +
4 +Для внедрения зависимостей в JS можно использовать следующую схему.
5 +
6 +1) Создаем класс ServieLocator. В нем будут содержаться все зависимости и метод для получения зависимости.
7 +2) Создаем BaseClass, который:
8 +Содержит статичный экземпляр ServieLocator.
9 +В конструкторе принимает список зависимостей.
10 +При выполнении конструктора запрашивает все необходимые зависимоти и бросате ошибку, если зависимость не найдена.
11 +
12 +
13 +Вопрос абстракции.
14 +Нет возможности определить интерфейс.
15 +Как вариант определять класс без логики. Методы могут быть пустими и бросать ошибку: метод не реализован. Потомок либо переопределит метод либо получит ошибку при вызове.
16 +В пустом классе определить статичное поле - имя абстракции, которое будет использоваться для регистрации и разрешения зависимости.
17 +
18 +
19 +Схожим образом можно интегрироваться с фреймворком типа React:
20 +Создать BaseReactComponent, от которого будут наследоваться все компоненты.
21 +Базовый BaseReactComponent будет создавать экземпляр BaseClass, который выполнит иницилизацию зависимостей, а после полученные зависимости можно скопировать из BaseClass в BaseReactComponent.
22 +При этом BaseReactComponent пробрасывает возможности конструктора BaseClass, позволяя передать массив необходимых зависимостей.
23 +
24 +
25 +
26 +