gpt4 book ai didi

go - 处理依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-01 22:08:48 25 4
gpt4 key购买 nike

假设我有以下代码:

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(...)可模拟的,因为这使我的功能单元可测试。但正因为如此,由于我的函数需要注入(inject)所有依赖项,我得到了许多参数。

Golang 中是否有更好的方法来处理许多依赖项?

最佳答案

处理许多注入(inject)的一种方法是使用结构作为包装器:

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()
}

我只是通过自己再次阅读问题才弄清楚...

关于go - 处理依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59050074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com