具有非循环依赖的可发布组件的多版本问题



在他的伟大著作《Clean Architecture》中,Robert Martin建议将开发环境划分为满足无循环依赖原则(ADP)的可发布组件(或包)。当组件的新版本可用时,其他团队可以决定是否合并新版本。因此,每个团队可以独立工作。

还有一个问题。考虑以下依赖情况:

  • 组件A依赖组件B版本1 *.
  • 组件A依赖于组件C版本2 *.
  • 组件C版本2.8(最新版本)*.

因此组件A依赖于组件B的版本1。*和B版本2.*。这带来了一个问题,并以某种方式将组件耦合在一起。例如,您必须更新组件的依赖关系以及两者之间的任何组件的依赖关系。解决这种情况有什么办法?

免责声明-我对c++一窍不通,所以这都是一般性的建议。

在我看来,. net通过让每个组件拥有自己的依赖项副本来解决这个问题——因此它们是完全隔离的。否则就是"DLL地狱"。

用OO来比喻,a和C所依赖的所有组件都是私有成员,并且只对它们内部可见,而对外部不可见。Comp A依赖于Comp C,它不关心C有什么依赖关系。

或者,如果你不能有独立的依赖,那么你需要考虑使用抽象的策略。抽象——使用依赖倒置等——将为你提供在运行时使用依赖的哪个实现(即哪个版本)的一些控制。

或者,如果可能的话,让团队协调他们将要使用的共享依赖的版本。

另一种选择——但是一个相当可恶的选择——是向后兼容的。

最新更新