我正在阅读Android : Clean Architecture的源代码,主要是为了学习如何将应用程序正确地组织到图层中,以及MVP模式,以及将它与我在MVP上阅读的内容相匹配{ {3}}
然而,就像我找到结构一样,我并不真正理解将单个应用程序整理到多个子项目或模块中的好处 即可。考虑到它们(数据,表示,域)彼此依赖,并最终将成为同一可执行文件的一部分,它看起来更像配置地狱。
dependencies {
...
compile project(':domain')
compile project(':data')
将 Android应用程序划分为多个子项目(模块)有什么好处,而不是将它们保存在一个项目中,而只是通过 packages <分隔它们< / em>的
答案 0 :(得分:3)
实际上这个问题不是特定于Android的,而是更多的软件架构相关,因为它适用于您开发的几乎所有软件(例如,为什么任何应用程序都包含多个模块,而不是所有软件都在一个软件包中)。
将代码拆分为模块会为您提供至少以下好处(这些是我想到的第3个好处):
我希望这对你有意义。
答案 1 :(得分:1)
使用多模块项目而不仅仅是软件包的主要好处是模块之间的代码使用仅限于一个方向。
模块内的任何代码都可以有来回关系:
A - &gt;使用来自 - &gt;的类乙强>
和
B - &gt;使用来自 - &gt;的类A 强>
如果A和B在单独的模块中,这只是单向的:
A - &gt; (使用来自的课程) - &gt;乙强> ...
但是B在A中看不到任何东西。
这将你的想法分成更小,一口大小的块。如果您需要了解模块B中的类如何工作,您只需要查看B中的其他类。 但在第一个场景中,你必须查看A和B中的所有类。
作为额外的好处,如果你想重用任何代码,你可以将该模块复制到下一个项目。
我通常将大部分代码放在模块中,并使用薄的应用层将它们连接在一起。我建议使用依赖性反转来在模块之间建立任何连接。
答案 2 :(得分:0)
除了更快的构建时间之外,拆分模块的另一个Android特定优势是应用程序的更新大小会更少。