Допустим, я хочу написать многослойный микросервисный бэкэнд для веб-приложения. Когда новый пользователь создается в auth, он запускает onCreate
, который имеет следующие цели:
- отправка подтверждающего электронного письма
- запись документа пользователям / коллекции
- написать первоначальные пользовательские утверждения пользователю auth
Я видел много примеров, когда каждый метод находится в классе, и DI используется для предоставления зависимостей для конструкторов. Я не понимаю, почему кто-то сделал бы это, вместо того, чтобы просто импортировать функции и использовать их по мере необходимости.
Сначала я хотел написать что-то вроде этого:
import userService from '../services/user'
onCreate((user, context) => {
const newUserService = userService().newUserService();
// The above is a function which instantiates the class, ie new NewUserService()
newUserService.verifyInput(user, context);
newUserService.verifyEmail(user, context);
newUserService.writeDocument(user, context);
newUserService.writeClaims(user, context);
});
Конструктор Никаких параметров. Зачем вообще использовать классы и объекты? Обычно мне нужен только один экземпляр, один экземпляр, для каждого триггера, если только это не многопользовательское действие (сообщение чата или транзакция).
Почему бы мне просто не импортировать / экспортировать функции, которые делают то, что я нужно, например:
import * as newUser from '../services/user/create';
...onCreate((user, context) => {
newUser.verifyInput(user, context);
newUser.verifyEmail(user, context);
newUser.writeDocument(user, context);
newUser.writeClaims(user, context);
});
Я также хочу уточнить, как я должен обрабатывать входные параметры. Если бы я использовал классы, я мог бы предоставить их один раз конструктору, например:
const newUserService = new NewUserService(user, context);
newUserService.validate()
newUserService.writeDocument();
newUserService.writeClaims();
ВОПРОС: Должен ли я использовать классы с DI, и если да, то как бы я это структурировал? Или я должен просто придерживаться модулей с коллекциями функций?