Go 框架中依赖注入的替代方案
在 Go 框架中,依赖注入 (DI) 是提供依靠的一种常见方式。可是,DI 可能引进复杂性和附加编码。对于小型到中型的项目,DI 可能多余。
以下是一些DI 的替代方案:
构造函数引入:直接从对象构造函数中传递依赖项,如同下列实例所示:1
typeServicestruct{
dbsql.DB
}
funcNewService(dbsql.DB)Service{
return&Service{db}
}
部分作用域变量:在函数内申明并复位依赖项,如同下列实例所示:1
funcHandleRequest(whttp.ResponseWriter,rhttp.Request){
db:=connectToDatabase()
service:=NewService(db)
service.HandleRequest(w,r)
}
单例模式:为依赖项创建一个单例,并在需要时浏览它,如同下列实例所示: