登录
首页 >  Golang >  Go问答

golang 中嵌套依赖注入可以接受吗?

来源:stackoverflow

时间:2024-04-20 22:06:29 387浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个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 中嵌套依赖注入可以接受吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>