1

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

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

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

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

4

2 回答 2

7

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

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

com
   .company
           .product
                   .module1
                           .server
                                  .function1
                                            .impl
                           .client
                                  .function1
                           .common
                                  .function1
                                            .impl
于 2009-12-23T11:44:53.697 回答
1

我从来没有真正看到过这个问题。

如果您查看项目的类图,您几乎会立即看到逻辑分组,并且包的树结构往往很容易映射到您需要的任何分组。

使用反向域名系统 (com.company.product...) 即使在您自己的公司内,您也永远不会发现冲突。

使用 Andreas_D 的示例,在 .server 和 .client 下,如果您的项目足够大以保证这一点,您实际上可能有额外的 3 或 4 个级别的包,其中包含数十或数百个单独的包。但该级别的结构往往从你的产品设计中走出来。

注意:这个类似的问题似乎得到了一些很好的描述如何使用包:

于 2009-12-23T19:06:57.123 回答