- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
过去几周我一直在研究 Java 包结构和依赖模式。关于该主题的著作中的一个共同点是包依赖关系应形成一个简单的规则 directed acyclic graph (DAG)。作者罗伯特·马丁甚至将 Acyclic Dependencies Principle 正式化(ADP),其中指出
The dependency structure between packages must be a directed acyclic graph (DAG). That is, there must be no cycles in the dependency structure.
一些 Java 库确实遵守这个简单的规则。即 Spring Framework库(spring-core、spring-web 等)和 Google Guava .
然而,令我惊讶的是,大多数领先的开源 Java 项目都没有!
以下开源项目在包之间存在循环依赖:
我是不是误解了软件工程原理?或者开发人员是否对这种包组织技术打折?
最佳答案
在使用 JArchitect 分析了许多 java 项目后,我可以确认,其中很多都包含了包之间的循环依赖,原因是很多选择了“按特性包”而不是“按层包”的方式。
这是一个 good article谈论这两种方法之间的区别。
让我们以 JDK 中的一些包为例
这些包是按功能设计的,正则表达式功能分组在 java.util.regex 包中,它需要 java.security 包中的一些安全功能,安全类也需要一些正则表达式功能。
关于java - 为什么所有领先的开源 Java 库在它们的包之间都有循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809884/
我知道我应该指定 argtypes对于我的 C/C++ 函数,因为我的某些调用会导致堆栈损坏。 myCfunc.argtypes = [ct.c_void_p, ct.POINTER(ct.c
我正在从 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators 学习 Itera
在我的数据库中,我有一个类别表。类别可以有父类别,使其成为递归关系 我还有一个产品表。每个产品都属于一个类别。 例如,我有一棵树,如下所示: Category Sub-Category 1
定义列表要求每个 会有标签? 例子: option1 每个 存在他的如果 空: value1 name2 value2 选项 2 每个 不存在他的如果空: value1 name2 value
我制作了一个脚本,它在开始时检查操作系统版本。 它读取/etc/os-release 文件,并检查操作系统是否为 CentOS 7。 但我不确定我是否可以确保每个 CentOS 7 都有那个文件。 其
我一直在使用 webapi 设置一个 mvc 项目。我可以正常工作,但我不知道为什么我的 GET 调用的 URL 中有附加部分。 示例: /api/User/Zholen?_=137349028082
我创建了具有 ACTIVE BOOL 的基类 class BaseTest{ public: bool active = false; BaseTest(){ // make
.parent { background-color: yellow; display: flex; justify-content: space-evenly; } .parent >
完整的错误是: AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'desc
我的 GUI 中有一些功能可以随着时间的推移更新给定的文本组件。理想情况下,我希望它接受任何具有 getText/setText 方法的内容。使用 JTextField 和 JTextPane 可以轻
我是一名优秀的程序员,十分优秀!