Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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_Language Agnostic_Code Organization - Fatal编程技术网

Java 可以将我的公共接口放入它们自己的包中吗

Java 可以将我的公共接口放入它们自己的包中吗,java,language-agnostic,code-organization,Java,Language Agnostic,Code Organization,是否可以将我的公共接口放入他们自己的包中,仅用于我的组织 比如说 com.example.myprogram - contains all normal code com.example.myprogram.public - contains public accessible interfaces com.example.myprogram.abstract - contains abstract classes 这是好事还是坏事,有什么坏处吗? < P>我不认为这是一个坏的实践,但是你

是否可以将我的公共接口放入他们自己的包中,仅用于我的组织

比如说

com.example.myprogram - contains all normal code

com.example.myprogram.public - contains public accessible interfaces

com.example.myprogram.abstract - contains abstract classes

这是好事还是坏事,有什么坏处吗?

< P>我不认为这是一个坏的实践,但是你可能想把它当作一个替代的方式来组织你的每一个逻辑功能而不是语法定义。因此,给定功能单元接口/抽象类/普通代码的所有代码都放在同一个包中。这是我们的原则之一


因此,根据项目的大小,可能需要将所有接口(但仅将这些接口放在单独的包中)放在一个单独的包中,如果您有一个纯粹的基于组件的插件体系结构,以便其他模块只知道接口,并且实际实现是以某种方式动态注入的,那么eve几乎是必要的

>P>我不认为这是一个错误的实践,但是,你可能想把它当作一个替代的逻辑逻辑,而不是语法定义来组织你的东西,这样,给定函数的接口/抽象类/正常代码的所有代码都在同一个包中。这是我们的原则之一


因此,根据项目的大小,可能需要将所有接口(但仅将这些接口放在单独的包中)放在一个单独的包中,如果您有一个纯粹的基于组件的插件体系结构,以便其他模块只知道接口,并且实际实现是以某种方式动态注入的,那么eve几乎是必要的

公共接口是系统模块或系统之间的正式契约。因此,有必要将它们与代码的其余部分隔离开来,使它们脱颖而出

例如,在我工作过的一个系统中,该系统的服务器和客户端组件之间的所有公共接口都被放置在一个名为api的特殊系统模块中。这有许多理想的效果,其中包括: -从语义上讲,如果你需要任何关于交流应该如何进行的信息,你知道应该去哪里寻找 -您可以单独对api模块进行版本设置,这在您不想要移动目标的情况下尤其有用,例如,您签署了一份合同,交付一个支持api v.1.1的应用程序,而不是在其他人更改接口并要求您调整自己的一方时不断播放catch

这并不意味着你不应该将它们进一步组织在子包中,以区分它们的用途


总之,通过将接口与代码库的其余部分分离,您做的是正确的,尽管根据您的具体需要,您最好进一步将接口隔离在单独的系统模块中。

公共接口是系统模块或系统之间的正式契约。因此,有必要将它们与代码的其余部分隔离开来,使它们脱颖而出

例如,在我工作过的一个系统中,该系统的服务器和客户端组件之间的所有公共接口都被放置在一个名为api的特殊系统模块中。这有许多理想的效果,其中包括: -从语义上讲,如果你需要任何关于交流应该如何进行的信息,你知道应该去哪里寻找 -您可以单独对api模块进行版本设置,这在您不想要移动目标的情况下尤其有用,例如,您签署了一份合同,交付一个支持api v.1.1的应用程序,而不是在其他人更改接口并要求您调整自己的一方时不断播放catch

这并不意味着你不应该将它们进一步组织在子包中,以区分它们的用途


总之,通过将接口与代码库的其余部分分离,您做的是正确的,尽管根据您的具体需要,您最好进一步将接口隔离在单独的系统模块中。

我可以向您推荐两种常用方法:

如果您真的认为您的接口将来可以有更多的实现,例如,您正在使用API,那么将它们移动到一个单独的模块,并在那里创建一个名为“core”的特殊包。com.example.myprogram.core。实现应该在相应的包中,如com.example.myprogram.firstimpl

如果您只有一个实现,那么将所有接口放在com.example.myprogram包中,并将所有具体类放在com.example.myprogram.impl包中


我可以向您推荐两种常用方法:

如果您真的认为您的接口将来可以有更多的实现,例如,您正在使用API,那么将它们移动到一个单独的模块,并在那里创建一个名为“core”的特殊包。com.example.myprogram.core。实现应该在相应的包中,如com.example.myprogram.firstimpl

如果您只有一个实现 然后将所有接口放在com.example.myprogram包中,并将所有具体类放在com.example.myprogram.impl包中


我根本不喜欢这种做法。您应该根据功能对抽象类和具体类以及接口进行分组

以JavaAPI为例。Sun是否将集合接口与实现分离?不。Sun的实践并不总是最好的指南,但在这种情况下我同意


不要这样做。

我根本不喜欢这种做法。您应该根据功能对抽象类和具体类以及接口进行分组

以JavaAPI为例。Sun是否将集合接口与实现分离?不。Sun的实践并不总是最好的指南,但在这种情况下我同意

不要这样做