我已经阅读了很多有关按功能包命名约定的内容。所以我决定在一个新项目中尝试一下。但是,我不确定应该如何命名我的大多数类将使用的包,因为我使用的是一个巨大的框架,例如 Spring
和 Hibernate
,例如。
这就是处理我们的 Spring 上下文
类的方法:
还有我们的数据库
访问类,用于管理连接等。
我有一个关于此的草案:为这些框架使用通用包,例如:
com.company.project.common.spring
com.company.project.common.database
但恐怕这看起来仍然有点像逐层封装
。 :)
应如何创建将由我的要素类
访问的包?
最佳答案
常见的建议是“按功能打包,而不是按层打包”。我经常做的是“按功能打包,然后分层”。我还认为顶级包应该是基于“功能”的(功能组件,等等)。但我也喜欢将我的层分成子包。
从我的角度来看,与框架相关的代码本身并不构成“功能”(如“问题域的重要、高级方面”),因此按功能打包没有多大意义这里。但是,这仍然是重要的代码,您需要一种方法来构建它。
我通常使用两种方法:
如果我需要扩展或扩充我正在使用的库,我会按照与库的包结构并行的方式构建包。例如,如果我需要为 Spring 实现一些新的数字格式化程序,我可能会将包命名为 com.acme.foo.springframework.format.number
,平行于org.springframework.format.number
.
但是,如果我需要为功能层实现通用基类,这可能类似于 com.acme.foo.common.<layer>
。例如,如果我们有 com.acme.foo.<feature>.dataaccess
某些功能的数据访问层的软件包,com.acme.foo.common.dataaccess
可以保存所有功能的数据访问层的基类。
两种方法并行使用。您只需决定某个类是框架还是库扩展(您能想象在该项目之外使用它吗?)或者它是否更接近您的项目的各层。
关于java - 使用按功能包约定将我的框架类放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41160381/