软件设计问题:循环依赖

nWo*_*orx 1 c#

我遇到了一个小小的设计问题.

以下情况

图书馆界面

包含每个模型类的接口(仅限getter和setter)

Libray Businnes Logic

包含接口库和DAL的实现.使用接口和传输器库

Library Transporter:包含用于消息传递第三方Web服务的类.如果需要,我还想添加第三方库的引用或Web引用.使用接口库.

到目前为止太好了.现在没有循环依赖.只要需要调用Web服务,业务逻辑库就会使用"transporter"库来调用extern方法.这非常有效.

但现在我需要创建一个Web服务,第三方应该能够在我们这边创建业务对象.我想创建一个"转换库",其中bussines对象转换为外部webservies的消息对象,反之亦然.我认为这是我当前架构的问题.如果我想创建这个库,我会得到循环依赖.原因是

  • 转运蛋白引用变换
  • 转换库引用BL
  • BL引用转运蛋白

我希望我能很好地解释我的情况.

感谢您解决这个问题的每一个想法.

Wim*_*nen 8

依赖注入救援:

  1. 创建一个ITransporter为"Transporter"提供的服务建模的界面.把它放在接口库中.制作Transporter工具ITransporter.
  2. 在您的业务库中,针对ITransporter接口进行编程而不是直接使用 Transporter.现在,业务库不再需要依赖于传输器库.
  3. 在您将所有内容粘合在一起的应用程序/ Web服务中,创建一个实例Transporter 并将其注入您需要ITransporter业务代码中的 对象的位置.