当前位置: > > > > golang 中嵌套依赖注入可以接受吗?
golang 中嵌套依赖注入可以接受吗?
来源:stackoverflow
2024-04-20 22:06:29
0浏览
收藏
知识点掌握了,还需要不断练习才能熟练运用。下面米云给大家带来一个Golang开发实战,手把手教大家学习《golang 中嵌套依赖注入可以接受吗?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
问题内容
嵌套依赖注入有什么问题吗?例如:
type ParentService struct{
db *sql.DB
}
type UsefulChildStruct struct{
attrA int
attrB int
db *sql.Db
}
func NewParent(db *sql.DB) *ParentService{
return &ParentService{db: db}
}
func (p *ParentService) NewChild() *UsefulChildStruct{
return &UsefulChildStruct{db: p.db}
}
func (c *UsefulChildStruct) DoSomething(){
x := c.db.SomeQuery
}
func (c *UsefulChildStruct) DoAnotherThing(){
x := c.db.SomeQuery
}
func main(){
db := getDB()
parent := NewParent(db)
child := parent.NewChild(parent.db)
}
其基本原理是,由 parentservice 创建的所有数据类型也都能够使用该依赖项。
解决方案
这样做没有问题。但是除了复杂性之外,你没有创造任何价值!
另一个问题是你限制了自己,如果你想以后使用不同的db作为UsefulChildStruct,你必须改变你的代码。这违反了开放扩展关闭修改原则
理论要掌握,实操不能落!以上关于《golang 中嵌套依赖注入可以接受吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
