golang 依赖循环的问题。

100 天前
 awanganddong

service 层会调用 tasks 任务

tasks 任务里边也会循环调用自身。

然后就依赖循环了,对于这种,大家怎么解决。

现在最 low 的办法,就是直接写两份代码。

4214 次点击
所在节点    Go 编程语言
37 条回复
zihuyishi
100 天前
抽出接口呗,这不是 jawa 常用手段,所以还是要多写写 jawa 呀
czyt
100 天前
拆分
body007
100 天前
A 依赖 B 的代码,和 B 依赖 A 的代码,提取出来放到 C 包里面,这样 A 依赖 C ,B 依赖 C 就行了。
FanGanXS
100 天前
中间多加一层,让 service 依赖于这一层,task 也依赖这一层。
lt0136
100 天前
最简单的办法:service 和 task 写在一个 package 里
fishofcat
100 天前
抽象出来到别的包啊
maxwellz
100 天前
哈哈哈,之前也遇到过,最简单的方法就是单独建一个包,让 A 依赖 C ,B 依赖 C ,要么就是通过接口来解耦
其实归结起来还是调用职责没划分好,要避免同级 package 互相调用
awanganddong
100 天前
大家说的我理解了,但是我不知道怎么入手,有 demo 吗
yb2313
100 天前
遇到这种我一般直接打屁股😡
povsister
100 天前
遇到这种层次设计基本功有问题的,只能说
菜,就多练.jpg
younger027
100 天前
人家问问题,你会就解答,不会就闭嘴。最烦 10 楼的,讲了一堆 pi 话,来显示自己来了?
yanyao233
100 天前
@zihuyishi 你这个爪哇怎么还带口音的
Immortal
100 天前
把公共部分抽出来,两个分别各自引用
weiwenhao
100 天前
把循环调用自身的逻辑抽离出来,放在单独的 service 或者其他 tasks 里面。
yplam
100 天前
参考依赖注入的模式,interface 抽出来,service 只依赖 interface ,然后在 main 或者写个容器进行服务初始化操作
yrj
100 天前
设计的问题。task 的任务应该归 task 所有。不要拆到公共 service 里
fgwmlhdkkkw
100 天前
Curtion
100 天前
加中间层呀,还能怎么办
changz
100 天前
爪蛙还是写得太少了 /狗头
gam2046
100 天前
@awanganddong #8

ModuleA 需要调用 ModuleB.foo
ModuleB 需要调用 ModuleA.foo

---

现在创建一个 ModuleC ,把原本 A/B 内的方法移过来,fooA/fooB

ModuleA 调用 ModuleC.fooB
ModuleB 调用 ModuleC.fooA

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1063855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX