假设我有以下代码:
import (
handlerA "some/path/handlerA"
handlerB "some/path/handlerB"
handlerC "some/path/handlerC"
handlerD "some/path/handlerD"
....
handlerZ "some/path/handlerZ"
)
func DoSomething(a handlerA.A, b handlerB.B, c handlerC.C, d handlerD.D..., z handlerZ.Z) {
a.DoA()
b.DoB()
c.DoC()
d.DoD()
....
z.DoZ()
}
我显然使函数DoSomething(...)
是可模拟的,因为这使我的函数单元可测试。但是由于这个原因,由于需要注入所有依赖关系,因此我可以使用许多参数。
Golang中有更好的方法来处理许多依赖吗?
答案 0 :(得分:2)
处理多次注入的一种方法是使用结构作为包装器:
type SomethingDoer struct {
a handlerA.A,
b handlerB.B,
c handlerC.C,
d handlerD.D,
...
z handlerZ.Z,
}
func (sd SomethingDoer) DoSomething() {
sd.a.DoA()
sd.b.DoB()
sd.c.DoC()
sd.d.DoD()
....
sd.z.DoZ()
}
我是通过再次阅读自己的问题来解决这个问题的...