这将是一个难以描述的问题,但这里有。
我们正在使用 Delphi Spring 框架。(http://code.google.com/p/delphi-spring-framework/)
假设我有一个 UnitA,它声明了由 ClassA 实现的 InterfaceA。
同样,我有 UnitB 声明由 ClassB 实现的 InterfaceB。
两者都在各自的初始化部分中向 Spring Container 注册了它们的接口和它们的类。
InterfaceA 依赖于 InterfaceB,但是因为我们使用的是 Spring,所以 UnitA 的子句中没有 UnitB uses
。换句话说,我们已经完成了我们的工作——我们已经解耦了 UnitA 和 UnitB,但我们仍然能够让 InterfaceA 依赖于 InterfaceB。
但是,鉴于上述情况,我们需要确保 UnitA 和 UnitB 都包含在项目中,以便解决依赖关系。
现在想象一下,我们开始一个新项目。那个新项目使用了 UnitA,但开发者没有意识到如果要使用 UnitA,还必须在项目中包含 UnitB。不会出现编译错误,因为依赖是在运行时解决的,而不是编译时。
这里有一个问题:确保在部署应用程序之前知道对 UnitB 的这种依赖关系的正确方法是什么?
我们可以预见一个复杂应用程序中的情况,尽管经过彻底的测试,给定的代码路径可能很长时间都没有执行,并且在部署之前没有发现这种缺失的依赖关系。
我们已经实现了一个系统,其中每个接口解析调用都伴随着一个Requires
调用,该调用在启动时检查并引发异常,确保我们会看到错误。但我们想知道是否有“最佳实践”或标准方法来检测或以其他方式处理此问题。
补充: 这是 Java 和其他语言的问题吗?