java - 架构和包

标签 java architecture package conventions three-tier

在分层架构中,您有表示层、逻辑层和数据层。

到目前为止,我一直将类分组为域、服务和 dao 包。这表示具有 POJO/JPA 实体、业务逻辑和数据访问层的模型。

我想可以将域和服务分组以形成逻辑层,但这在表示层或 UI 层上留下了问号。是否有任何约定,甚至是不成文的,在这一层中根据类的性质将类分组到包中?还是留给领导项目的人欣赏?

作为额外说明,我目前正在试验 Web 应用程序,并使用“servlet”包对 servlet 进行分组,并使用“web”包用于 ResponseHeaderFilters、ServletContextListeners 和实用程序类。我很想知道桌面应用程序是如何完成的。

最佳答案

我从未听说过与架构有关的包命名约定。我所知道的唯一惯例或“最佳实践”是您的包名称应该以独特的模式开头,通常由反向域名(如 com.mycompany)左右组成。只是为了确保您不会将来自不同库的类添加到同一个包(命名空间),这可能会导致意外的副作用。

但无论如何,如果您根据层或用途命名包,它会增加可读性。我见过像下面这样的方案,我个人很喜欢,因为它很容易找到和识别类,并且易于扩展:

com
   .company
           .product
                   .module1
                           .server
                                  .function1
                                            .impl
                           .client
                                  .function1
                           .common
                                  .function1
                                            .impl

关于java - 架构和包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952104/

相关文章:

java - 如何使用格式在 Java 中缩进

php - 如何优化多个进程试图写入同一个日志文件的过程

go - golang 中的工厂方法存在循环依赖问题

java - C++ 命名空间,与 Java 包的比较

Javafx 如何在单击按钮后取消单击/禁用按钮

Java:动态调整二维数组中列的大小

java - 如何选择具有 CLOB 数据类型的列

javascript - 编写硬核 javascript 应用程序的成功途径是什么?

python - conda 4.9.2 是否报告假包冲突?

c# - 将第二个索引器添加到 Math.NET Numerics