Я хотел бы знать, что является общим и хорошим методом для внедрения зависимостей в функциональном программировании.
Например, если у меня есть 2 модуля (БД и пользователь).
Пользовательмодуль принимает модуль Db.
Но я должен отправить каждую функцию Db в пользовательском модуле или весь объект Db.
Я имею в виду это (в JS):
const User = {
insert(inserted, userData) {
},
delete(deleter, userId) {
}
}
User.insert(Db.insert, {username: 'asd', admin: 1..});
User.delete(Db.delete, 123);
или это:
function User(db) {
return {
insert(userData){..}
delete(userId){..}
}
let usrs = User(Db)
usrs.insert({username..}).
usrs.delete(123)
Как вы видите, второй пример кода меньше, но он все еще объектно-ориентирован.
В первом примере мне нужно передавать функцию Db каждый раз, когда я вызываю метод изПользовательский модуль. Возможно, со временем это станет очень грязным.
Можете ли вы предложить, если есть лучший способ сделать это. Поэтому, если в будущем я изменю объект Db (например, mysql из sqlite), мне придется изменить его только в одном месте.
Спасибо