SDR*_*yes 5 design-patterns dependency-injection unity-container
谢谢阅读.
我正在使用Unity框架在我的应用程序(ASP.Net MVC)中实现依赖注入.有时我想避免的服务之间存在一些循环依赖关系.
所以我正在寻找解决方案:)
好吧,让我们想象3服务ServiceSally,ServiceJoe,ServiceJudy
ServiceSally依赖于ServiceJoe
ServiceJoe依赖于ServiceJudy
ServiceJudy依赖于ServiceSally(<<那有点奇怪不是吗?)
因此,如果您实例ServiceSally,她将需要注入ServiceJoe,而ServiceJoe将需要ServiceJudy和.... BANG!... ServiceJudy将需要ServiceSally开始无休止的循环 - 非常悲伤的三角形 - .
我怎么能解决这个循环爱三角形的情况?:/
更新:
我的第一个解决方案:LazyJoe
如何在服务引用周围使用包装器来延迟注入,直到它们被使用为止?
你怎么看?
这取决于您正在使用的DI框架(如果有).例如,Spring将处理这种循环依赖,只要不是每个涉及的bean(对象)都由构造函数初始化.基本上它将一个空对象注入(至少)其他bean之一,并在以后初始化它.所以序列是这样的:
这就是为什么初始化构造不适用于此方法的原因(因为初始化是延迟的).这是处理它的唯一方法.好吧也许你也可以使用某种代理(临时或永久).
一般来说,至少根据我的经验,循环依赖性是设计的症状,这种设计要么以某种方式存在缺陷,要么需要简化.
| 归档时间: |
|
| 查看次数: |
3924 次 |
| 最近记录: |