在Java中,将所有接口提取到一个单独的项目中的技术动机是什么?
In Java, what is the technical motivation for extracting all interfaces into a separate project?
我见过 Java 个接口都被提取到单独项目中的项目。
这样做的动机是什么?仅仅是组织性的吗?
比如大气项目就是这样做的。我见过其他人。
我正在考虑将它用作我 运行 的项目的组织原则,并且想知道它可能提供的其他好处。
存在一个用例:Java SPI,服务提供商接口。接口是单独提供的,(替代)实现是单独提供的。通过带有接口名称的清单条目,使用接口可以找到该接口的 all/any 提供者。我想到了 Xalan 和 Xerces XML 实现。
此外,如果没有 SPI 能够提供多种实现,例如测试驱动开发原型,这可能是有意义的。
只是为了提供我的 2 美分,
我目前正在开发一个 C# 项目,该项目有一个包含所有接口的单独项目。该项目被命名为 'framework' 并且是一个更大项目的一部分,该项目包含来自该框架项目的 10 多个接口实现。我的猜测是(后来我的顶头上司也证实了这一点)是它 将实现与设计 完全分开,称为 loose coupling。
这样继承框架项目的各种项目可以单独开发或独立换出。对于刚接触该项目的开发人员,him/her 更容易在一个中心位置熟悉其他项目中使用的所有方法。添加新方法或删除旧方法都在一个项目中完成,使用这些接口的每个其他项目都必须遵循严格的 'contract'。 本质上它有助于长期维护项目运行。
它还可以更轻松地在测试期间创建框架某些部分的模型,单独隔离每个 class 并测试它们是否存在可能的错误。
它有助于遵守接口隔离原则,其中如果特定接口例如只有一个 'save' 方法,但我们需要 'log'而'read'对于具体的实现classes,我们可以再创建一个继承父接口的接口,都在框架项目中,不用在不同的项目中到处寻找我们想要的接口添加。 I found this在研究接口隔离原则时
我见过 Java 个接口都被提取到单独项目中的项目。
这样做的动机是什么?仅仅是组织性的吗?
比如大气项目就是这样做的。我见过其他人。
我正在考虑将它用作我 运行 的项目的组织原则,并且想知道它可能提供的其他好处。
存在一个用例:Java SPI,服务提供商接口。接口是单独提供的,(替代)实现是单独提供的。通过带有接口名称的清单条目,使用接口可以找到该接口的 all/any 提供者。我想到了 Xalan 和 Xerces XML 实现。
此外,如果没有 SPI 能够提供多种实现,例如测试驱动开发原型,这可能是有意义的。
只是为了提供我的 2 美分,
我目前正在开发一个 C# 项目,该项目有一个包含所有接口的单独项目。该项目被命名为 'framework' 并且是一个更大项目的一部分,该项目包含来自该框架项目的 10 多个接口实现。我的猜测是(后来我的顶头上司也证实了这一点)是它 将实现与设计 完全分开,称为 loose coupling。
这样继承框架项目的各种项目可以单独开发或独立换出。对于刚接触该项目的开发人员,him/her 更容易在一个中心位置熟悉其他项目中使用的所有方法。添加新方法或删除旧方法都在一个项目中完成,使用这些接口的每个其他项目都必须遵循严格的 'contract'。 本质上它有助于长期维护项目运行。
它还可以更轻松地在测试期间创建框架某些部分的模型,单独隔离每个 class 并测试它们是否存在可能的错误。
它有助于遵守接口隔离原则,其中如果特定接口例如只有一个 'save' 方法,但我们需要 'log'而'read'对于具体的实现classes,我们可以再创建一个继承父接口的接口,都在框架项目中,不用在不同的项目中到处寻找我们想要的接口添加。 I found this在研究接口隔离原则时