如果您搜索如何解决循环依赖关系,答案几乎总是“使用接口”。我知道如何使用这种技术来使循环依赖工作,但我不明白这是如何解决循环依赖。
假设我有两个类View和Presenter相互引用。现在我应用“解决方案”并创建接口IView和IPresenter。 View不再引用Presenter,而是IPresenter;演示者引用IView而不是View。
圈子越来越大,但它仍然存在。 View和Presenter仍然相互依赖,而不是直接。但是,我所看到的每个答案都绝对肯定循环依赖现在是已解决。我在这里有什么误解?
答案 0 :(得分:0)
循环依赖关系可以使用DI来解决,但只能使用"延迟"或"财产"注射,而不是"构造函数"注射。您需要首先构造对象,然后在它们上设置属性以注入依赖项。支持属性注入的DI容器可以抽象出这个细节。
答案 1 :(得分:0)
这些循环依赖关系尚未解决。
这些情况下的标准答案是在构造后分配依赖关系。这解决了这些循环依赖关系创建的问题,而不是循环依赖关系本身。
这可能主要是一个语言问题,人们只是说“我解决了X和Y之间的循环依赖”,而不是“我解决了我们因为X和Y之间的循环依赖而产生的问题”。