Eva*_*aas 4 java interface package
假设我有一个界面:
package org.my.dicom.CEchoSCU;
public interface CEchoSCU {
// stuff here...
}
Run Code Online (Sandbox Code Playgroud)
我还将有一个接口的实现:
public class SimpleCEchoSCU implements CEchoSCU {
// stuff here...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,哪个包应该包含实现?我已经看到其他开发人员将实现放在与接口相同的包中(org.my.dicom在本例中),以及使用单独包的情况(通常类似org.my.dicom.impl).除了个人喜好之外,还有什么理由更喜欢一个而不是另一个?
除了其他之外,类还实现了一个接口.我会把类放在一个与类的其余部分/包含的内容相关的包中,而不是反映它实现的一个接口的包.例如,如果我有200个实现Printable的类,我不会将它们全部放在com.mycompany.impl.printable包中.实现可打印的飞机类将包含其他飞机的包装.船类将与其他船只一起包装.实现Printable的Car类将包含其他汽车内容.
如果所有SimpleCEchoSCU(以及任何其他未来类)都实现了CEchoSCU,那么您应该考虑使CEchoSCU成为一个抽象基类并派生出不同的实现.无论哪种方式,(接口或抽象基类)的东西都是完全相关的,我会将它们放在同一个包中.
好吧,关于您将implementation课程和放置在何处并不是一个严格的规则interface。您可以将它们放在任何包中,只要可以在应有的位置访问它们即可。
但是,当然,您也希望将所有内容都related classes合而为一package,而class这就是not related您set of classes想要的different package。
在大多数情况下,我的做法是:-我将自己保持interfaces在different package和implementing classes中different package。这样,如果我想将我的接口提供给其他接口,则可以直接放弃包含我所有接口的软件包。
但是同样,这完全取决于您的要求以及您在代码中遵循的设计实践。
因此,我通常选择的包名称是:-
com.someName.api ->对于接口com.someName.impl ->用于实现类。这样,我就可以轻松地将自己api与implementation。