我正在尝试验证以下依赖项:
在这张图中,红色的关系被禁止,绿色的关系被允许:
- 适配器包中的任何类都不能继承自端口包中的类;
- 适配器包中的任何类都可以使用(例如具有字段)端口包中的类;
- 服务包中的任何类都不能使用端口包中的类(例如,有一个字段);
- service包中的任何类都可以继承port包中的类;
如果可能的话,我想将这些验证添加到分层架构中。
谢谢你。
LayeredArchitecture
考虑层之间的所有 依赖关系。您不能禁止继承,但允许访问——反之亦然。我建议改为定义单独的特定规则:
@ArchTest
ArchRule adapter_should_not_inherit_from_port = noClasses()
.that().resideInAPackage("….adapter")
.should().beAssignableTo(JavaClass.Predicates.resideInAPackage("….port"));
@ArchTest
ArchRule service_should_not_access_port = noClasses()
.that().resideInAPackage("….service")
.should().accessClassesThat().resideInAPackage("….port");