接口层次结构

时间:2012-11-06 20:35:30

标签: java java-ee

在Java中创建接口层次结构被认为是不好的吗?

我设计了我的存储库层,如下所示:

  • Repository,包含CRUD方法
  • JPARepository,JPA中仅需要的潜在方法
  • SomeModelRepository,该模型存储库的具体方法。
  • SomeModelJPARepository,扩展了JPARepository和SomeModelRepository

这被认为是不好的做法,它是一个奇怪的有组织的层次结构吗?

1 个答案:

答案 0 :(得分:4)

不,实际上创建接口层次结构是相当普遍的,至少在库中是这样。 以NavigableSet为例,它上面有4层接口(SortedSet,Set,Collection,Iterable)。

在这个例子中,钻石继承有点特殊,但如果有必要,本身并不是一个糟糕的选择。但通常树形层次结构更清晰,更好。在这种情况下,我会考虑制作:

  1. SomeModelRepository是JPARepository的子类,因此强制所有实现类支持JPA
  2. 在不同的接口中指定JPA支持,而不是从存储库中指定子类。然后,所有类都可以选择是否独立于其特定的Repository接口来实现JPA。有关示例,请参阅Serializable。这是一个事实上的解决方案,用于表示类支持特定功能,如“序列化”,或者像这种情况下的“持久性”。