程序开发 · 2023年10月22日

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 中嵌套依赖注入可以接受吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注公众号吧!