Ell*_*iot 8 java spring dependencies circular-dependency package
在过去的几周里,我一直在研究Java包结构和依赖模式.关于该主题的着作中的一个共同点是包依赖应该形成有向无环图(DAG)的简单规则.作者罗伯特马丁甚至正式确定了非循环依赖原则(ADP),该原则指出
包之间的依赖关系结构必须是有向无环图(DAG).也就是说,依赖结构中必须没有循环.
一些Java库确实遵循这个简单的规则.即Spring Framework库(spring-core,spring-web等)和Google Guava.
但令我惊讶的是,大多数领先的开源Java项目都没有!
以下开源项目在包之间具有循环依赖关系:
我误解了软件工程原理吗?或者开发商是否对此包装组织技术打折?
我可以确认,在使用JArchitect对许多 java 项目进行分析后,其中许多项目都包含包之间的循环依赖关系,原因是许多项目选择“按功能打包”而不是“按层打包”方法。
这是一篇讨论这两种方法之间差异的好文章。
让我们以 JDK 中的一些包为例
这些包是按功能设计的,正则表达式功能分组在 java.util.regex 包中,它需要 java.security 包中的一些安全功能,并且安全类也需要一些正则表达式功能。
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |