Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接口层次结构_Java_Jakarta Ee - Fatal编程技术网

Java 接口层次结构

Java 接口层次结构,java,jakarta-ee,Java,Jakarta Ee,在Java中创建接口层次结构被认为是不好的吗 我的存储库层设计如下: 存储库,包含CRUD方法 JPA仅在JPA中需要的一种积极的、潜在的方法 SomeModelRepository,该模型的存储库的特定方法。 SomeModelJPARepository,扩展了JPARepository和SomeModelRepository 这被认为是一种糟糕的做法吗?这是一种奇怪的有组织的层次结构吗?不,事实上,至少在库中,创建接口层次结构是相当常见的。 例如,它上面有4层接口,分别是Set、Set、Co

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

我的存储库层设计如下:

存储库,包含CRUD方法 JPA仅在JPA中需要的一种积极的、潜在的方法 SomeModelRepository,该模型的存储库的特定方法。 SomeModelJPARepository,扩展了JPARepository和SomeModelRepository
这被认为是一种糟糕的做法吗?这是一种奇怪的有组织的层次结构吗?

不,事实上,至少在库中,创建接口层次结构是相当常见的。 例如,它上面有4层接口,分别是Set、Set、Collection和Iterable

在本例中,菱形继承有点特殊,但如果有必要,它本身也是一个不错的选择。但通常树层次结构更清晰、更好。在这种情况下,我会考虑: SomeModelRepository是JPARepository的子类,因此强制所有实现类支持JPA 在不同的接口中指定JPA支持,而不是存储库中的子类。然后,所有类都可以选择是否独立于其特定的存储库接口实现JPA。有关示例,请参见。这是一个事实上的解决方案,用于表明类支持特定功能,如序列化,或者在本例中可能支持持久性。
不,事实上创建接口层次结构是很常见的,至少在库中是这样。 例如,它上面有4层接口,分别是Set、Set、Collection和Iterable

在本例中,菱形继承有点特殊,但如果有必要,它本身也是一个不错的选择。但通常树层次结构更清晰、更好。在这种情况下,我会考虑: SomeModelRepository是JPARepository的子类,因此强制所有实现类支持JPA 在不同的接口中指定JPA支持,而不是存储库中的子类。然后,所有类都可以选择是否独立于其特定的存储库接口实现JPA。有关示例,请参见。这是一个事实上的解决方案,用于表明类支持特定功能,如序列化,或者在本例中可能支持持久性。
重写答案以更好地回答原始问题!谢谢@dtech:还有一个问题,我还有一个抽象类,用于实现CRUD泛型类。像我现在在类中所做的那样实现存储库接口没有错吗?或者我应该直接在类中添加CRUD吗?对于一个类可以实现多少个接口,在它开始发出臭味的时候有没有限制?好的,一个接一个。抽象类的实现还不错。事实上,有接口和实现抽象类是很常见的。这样,如果子类还没有基,则从抽象继承,如果有的话,只需实现接口即可。不过,您应该在抽象类中实现尽可能多的接口,否则它是无用的。重写答案以更好地回答原始问题!谢谢@dtech:还有一个问题,我还有一个抽象类,用于实现CRUD泛型类。像我现在在类中所做的那样实现存储库接口没有错吗?或者我应该直接在类中添加CRUD吗?对于一个类可以实现多少个接口,在它开始发出臭味的时候有没有限制?好的,一个接一个。抽象类的实现还不错。事实上,有接口和实现抽象类是很常见的。这样,如果子类还没有基,则从抽象继承,如果有的话,只需实现接口即可。但是,您应该在抽象类中实现尽可能多的接口,否则它是无用的。