-
21-09-2019 - |
题
在分层架构,你有表示层,逻辑层和数据层。
到目前为止,我一直在分组类到域,服务和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级有数十或数百个单独的包里面包的,如果你的项目足够大,以保证..但在那个结构水平趋于走出你的产品设计。
注:此类似的问题似乎得到一些很好的说明了如何使用软件包: