Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 架构和包_Java_Architecture_Packages_Conventions_Three Tier - Fatal编程技术网

Java 架构和包

Java 架构和包,java,architecture,packages,conventions,three-tier,Java,Architecture,Packages,Conventions,Three Tier,在分层体系结构中,有表示层、逻辑层和数据层 到目前为止,我一直在将类分组为域、服务和dao包。这表示了POJO/JPA实体、业务逻辑和数据访问层的模型 我认为域和服务可以分组以形成逻辑层,但这在表示层或UI层上留下了一个问号。在这一层中,根据类的性质将类分组到包中,是否有任何约定,甚至是不成文的约定?还是让领导项目的人来欣赏 作为一个额外的指示,我目前正在试验web应用程序,并使用“servlet”包对servlet进行分组,使用“web”包对ResponseHeaderFilter、Servl

在分层体系结构中,有表示层、逻辑层和数据层

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

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


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

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

但是无论如何,如果您按照层或用法来命名包,它会增加可读性。我见过一个类似下面的方案,我个人很喜欢,因为它很容易找到和识别类,也很容易扩展:

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

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

但是无论如何,如果您按照层或用法来命名包,它会增加可读性。我见过一个类似下面的方案,我个人很喜欢,因为它很容易找到和识别类,也很容易扩展:

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

我从来没有见过这么多的问题

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

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

以Andreas_D为例,在.server和.client下,如果您的项目足够大,那么实际上可能会有另外3或4个级别的包,其中包含数十或数百个单独的包。。但是这个层次的结构往往来自于你的产品设计


注意:这似乎得到了一些关于如何使用软件包的很好的描述:

我从来没有看到过这样的问题

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

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

以Andreas_D为例,在.server和.client下,如果您的项目足够大,那么实际上可能会有另外3或4个级别的包,其中包含数十或数百个单独的包。。但是这个层次的结构往往来自于你的产品设计


注意:这似乎得到了一些关于如何使用软件包的好描述:

谢谢Andreas。我还想问一下长包名是如何形成的,这就回答了这个问题。我想我所说的“命名约定”是指类如何根据其性质进行分组。我会重新安排这个问题的。谢谢安德烈亚斯。我还想问一下长包名是如何形成的,这就回答了这个问题。我想我所说的“命名约定”是指类如何根据其性质进行分组。我将重新表述这个问题。这不是一个真正的问题。我处于一个密集的java EE课程的中间,如果我最终加入一个团队,了解不同的惯例将是一个好处。两三个月前,我甚至不知道什么是多层体系结构,所以我想我走对了方向;)附言:1投你的观点和相关链接的赞成票。这不是一个真正的问题。我处于一个密集的java EE课程的中间,如果我最终加入一个团队,了解不同的惯例将是一个好处。两三个月前,我甚至不知道什么是多层体系结构,所以我想我走对了方向;)附言:1投你的观点和相关链接的赞成票。