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