golang解决依赖循环问题(import cycle)

2016-11-07 YongHao Hu 更多博文 » 博客 » GitHub »

go

原文链接 http://yonghaowu.github.io/2016/11/07/GolangSolveImportCycle/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


网上传的最多的方法就是使用接口interface解决 这个文章,实际上, 我认为这个方法并不可行. 到作者的github项目上看, 他给出的例子并没有解决此问题(醉

不行的原因是: 假设原来B引用A, A引用B, 后来做出一个C的interface, 由A去实现, B依赖C, 看似很好, 实际上, 这种情况还是需要A的实例.

也就是说, B尽管用了接口, 还是会依赖A这个对象实例.

从A把实例作为参数传给B才是解决方法.


方法二:

把A引用B的方法, 当做函数参数来传递. A用到B哪些函数, 就把哪些函数作为参数传递过去.


方法三:

最好的办法就是, 考虑整个项目的架构. 往往出现依赖问题, 是包的从属问题分析的不好.