我想知道在函数式编程中进行依赖注入的常用和好的方法是什么。
例如,如果我有 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)
如您所见,第二个示例代码较少,但它仍然是面向对象的。
在第一个示例中,每次从 User 模块调用方法时,我都必须传递 Db 函数。也许随着时间的推移,它会变得非常混乱。
你能建议是否有更好的方法来做到这一点。因此,如果将来我更改 Db 对象(例如来自 sqlite 的 mysql),我必须只在一个地方更改它。
谢谢