我知道这有几个相关的帖子,但我有一些具体的问题希望能得到帮助。抱歉,如果它们非常基本......
这是一个示例问题 - 非常简单,但你明白了 - 我有几个对象,它们有一些共同的功能,例如一家制药公司的部门——神经科、肿瘤科、感染科等。他们都需要解析患者文档文件,并将数据上传到数据库。当然,每个部门的数据性质略有不同。如果我使用按功能打包,我会有
com.company.neurology
Neurology.java
NeurologyDocument.java
NeurologyDAO.java
com.company.infection
Infection.java
InfectionDocument.java
InfectionDAO.java
等 问题是我需要一个文档类需要扩展的抽象类,例如
AbstractDocument.java
public class AbstractDocument
{
public void validateDocument(){...}
public void readDocumentHeader(){...}
public void readDocumentFooter(){...}
...
}
一些数据访问文件例如
DBConnection.java
public class DBConnection
{
public void makeConnectionToDB() {... }
public void createCache() {... }
public void closeConnectionToDB() {... }
}
一些错误类
ParseError.java, PatientNotFoundException etc.
如果包是按功能划分的,那么这些通用类/接口(interface)去哪里了?
最佳答案
我不认为你应该创建一些 common
包裹。我想使用的抽象有问题。
你必须找到一种方法将具有相同目的的类联合到某个包中,并将这个包放在com.company.shared.<feature_name>
下。 .
您的情况可能是:
- com.company.shared.database
- com.company.shared.data_parsing
一个包只包含一个或两个类是没有问题的。但它应该只联合具有相同目的的类,并且有一个清晰的名称。
避免像common
这样的包和类名称.一个名字应该不言而喻。
关于java - 按层封装 VS 按功能封装库命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083062/