繁体   English   中英

在Java中,将所有接口提取到单独项目中的技术动机是什么?

[英]In Java, what is the technical motivation for extracting all interfaces into a separate project?

我见过Java项目,其中的接口都被提取到一个单独的项目中。

这是什么动机? 它只是组织吗?

例如,大气项目就是这样做的。 我见过其他人。

我正在考虑将它作为我正在运行的项目的组织原则,并且想知道它可能提供的其他好处。

存在一个用例: Java SPI,服务提供者接口 接口是单独提供的,(替代)实现是分开提供的。 通过具有接口名称的清单条目,使用接口可以找到该接口的所有/任何提供者。 我想到了Xalan和Xerces XML实现。

此外,没有SPI能够提供多种实现,如测试驱动开发原型,可能有意义。

只是提供我的2美分,

我目前正在开发一个C#项目,它有一个包含所有接口的独立项目。 该项目被命名为“框架”,并且是一个更大的项目的一部分,该项目包含来自该框架项目的10多个接口实现。 我的猜测是(后来我的直接上级证实了这一点)是它完全将实现与设计分开 ,称为松散耦合

这样,从框架项目继承的各种项目可以单独开发或独立交换。 从一个刚接触项目的开发人员,他/她更容易熟悉在一个中心位置的其他项目中使用的所有方法。 添加新方法或删除旧方法都是在一个项目中完成的,并且使用这些接口的每个其他项目都要遵循严格的“合同”。 从本质上讲,它有助于长期维护项目。

它还使得在测试期间更容易创建框架的某些部分的模型,以单独隔离每个类并测试它们是否存在可能的错误。

它有助于遵循接口隔离原则,在该原则中,如果特定接口仅具有“保存”方法,但我们需要针对特定​​实现类的“日志”和“读取”,我们可以创建另一个将继承的接口父接口,所有在框架项目中,并没有涉及到不同的项目,以找到我们想要添加的接口。 在研究接口隔离原理时发现了这一点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM