3

我正在为我当前的项目使用 MPJ-api。我使用的两个实现是 MPJ-express 和 Fast-MPJ。但是,由于它们都实现了相同的 API,即 MPJ-API,由于名称空间冲突,我无法同时支持这两种实现。

有没有办法用相同的包和类名包装两个不同的库,以便在 Java 或 Scala 中同时支持两者?

到目前为止,我能想到的唯一方法是将模块移动到单独的项目中,但我不确定这是否可行。

4

1 回答 1

0

如果您的代码仅使用 MPI 函数的子集(就像我审查过的大多数 MPI 代码一样),您可以编写一个抽象层(特征甚至 Cake-Pattern)来定义您实际使用的操作。然后,您可以为每个实现实现一个具体的适配器。

这种方法也适用于非 MPI 通信层(想想 Akka、JGroups 等)

作为奖励,您可以使用 SLF4J 方法:在运行时根据类路径中的实际内容选择正确的实现。

于 2012-11-13T14:17:13.777 回答