在分层架构,你有表示层,逻辑层和数据层。

到目前为止,我一直在分组类到域,服务和DAO包。这表示使用POJO / JPA实体模型,业务逻辑和数据访问层。

我想域和服务可以被分组以形成逻辑层,但留下的呈现或UI层上的问号。是否有任何约定,即使是不成文的,在这层根据其性质分组类到包的条款?或者这是留给谁就正在领导一个项目升值?

作为一个额外的指示,我与web应用程序的时刻实验和使用“小服务程序”包组Servlet和“网络”包ResponseHeaderFilters,的ServletContextListener和工具类。我很想听到的事情是如何与桌面应用程序完成的。

有帮助吗?

解决方案

我从来没有听说过的包命名约定相对于架构。我唯一知道的公约或“最佳实践”是你的包名称应该以一个独特的方式,最常见的形成相反的域名(如com.mycompany)左右开始。只是为了确保你不添加不同库中的类相同的包(命名空间),这可能会导致意想不到的副作用。

但无论如何,这是增加可读性,如果你命名层或使用后的软件包。我见过像我个人很喜欢,因为它很容易找到并识别类,易于扩展的follwing方案:

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

其他提示

我从来没有真正见过太多的问题与此有关。

如果你看一下你的项目的类图,你几乎会立即看到逻辑分组,和包的树状结构趋于容易映射到任何分组你需要的。

使用

反向域名系统(com.company.product ......),你永远不会发现,即使在你自己的公司发生碰撞。

使用Andreas_D的例子,在.server和.client你实际上可能有一个额外的3或4级有数十或数百个单独的包里面包的,如果你的项目足够大,以保证..但在那个结构水平趋于走出你的产品设计。

注:此类似的问题似乎得到一些很好的说明了如何使用软件包:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top