考虑一个基于组件的系统,其中组件使用彼此的功能并且可能具有软循环依赖关系。这里的“软依赖”是指一个依赖组件将使用另一个可用的服务,但如果没有它,它仍然可以运行属性。系统中也存在硬依赖,当一个组件没有另一个组件就无法运行,但它们不是循环的。这是一个好的设计还是应该避免循环依赖,即使它们是软的?
这个问题源于 C# 不允许项目在项目之间具有循环依赖关系,我使用项目来隔离系统中的组件。然后它们被编译成程序集,其中的一个子集由应用程序根据配置动态加载。
PS如果您将此问题标记为不具建设性,请添加评论,建议我可以在其中提出设计问题,这些问题并不总是有一个客观的答案并且需要一些讨论。
更新:请求的软依赖示例:客户端管理器组件需要使用位置组件的服务,告诉客户端对象的位置(这是硬依赖,因为客户端必须知道对象的位置)。然而,位置组件也希望使用客户端管理器组件的接口来扩展客户端的 API 并允许他们设置位置(这是软依赖),因为如果当前实例的系统中可能不存在客户端管理器组件服务器不需要与客户端交谈。