java - 按层封装 VS 按功能封装库命名?

标签 java architecture package

我知道这有几个相关的帖子,但我有一些具体的问题希望能得到帮助。抱歉,如果它们非常基本......

这是一个示例问题 - 非常简单,但你明白了 - 我有几个对象,它们有一些共同的功能,例如一家制药公司的部门——神经科、肿瘤科、感染科等。他们都需要解析患者文档文件,并将数据上传到数据库。当然,每个部门的数据性质略有不同。如果我使用按功能打包,我会有

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/

相关文章:

class - 了解 Hadoop 包和类

java - 将现有包添加到 Eclipse 中的现有 Java 项目?

来自 "abc@deg-.com"等地址的 javax.mail 无法正常工作

database - 使用回调应用程序将 "go deep"设置为不好的做法吗?

java - @EnableAspectJAutoProxy Spring MVC 应用程序失败

java - 对于所提供的用例,微服务和单一方法有什么区别

php - 特定应用的首选设计模式/架构

package - 如何使用 dune ocaml 将本地库包含到可执行文件中

java - Google App Engine Java小操作

java - 无法在 Eclipse 中执行 dex : method ID not in [0, 0xffff]: 65536