gpt4 book ai didi

c# - 软件设计问题: circular dependency

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:06 29 4
gpt4 key购买 nike

我遇到了一个小设计问题。

如下情况

库界面

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

图书馆业务逻辑

包含接口(interface)库和 DAL 的实现。使用接口(interface)和传输库

文库转运体:包含用于消息传递第 3 方 Web 服务的类。如果需要,我还想添加第 3 方库的引用或 Web 引用。使用接口(interface)库。

到目前为止还不错。现在没有循环依赖。一旦需要调用 web 服务,业务逻辑库就会使用“transporter”库调用 extern 方法。这非常有效。

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

  • 转运体引用 Transform
  • 转换库引用 BL
  • BL 引用转运体

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

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

最佳答案

Dependency injection救援:

  1. 创建一个ITransporter 接口(interface)哪个模型提供的服务“搬运工”。把它放在接口(interface)库中。使 Transporter 实现 ITransporter
  2. 在您的企业库中,程序针对 ITransporter 接口(interface)而不是直接使用运输车。现在的生意库不需要依赖转运库了。
  3. 在您的应用程序/网络服务中你把所有东西粘在一起,创建 Transporter 实例并将它注入(inject)你需要的地方ITransporter 您业务中的对象代码。

关于c# - 软件设计问题: circular dependency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223251/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com