我必须制作一款功能强大的应用。这些功能可以根据客户的不同而增长。我想有两个不同的功能模块/项目,但只有一个应用程序/apk。我有一个仪表板模块,它有一些按钮可以打开许多其他功能(它们的 Activity )。真的可以像这样拥有一个应用和多个模块吗?
我在看this video作为引用。我想,也许,从那个视频来看,通用模块是适合我的应用程序。 buyer-project 和 seller-project 可以是库。
所以,在图中,我有一个仪表板模块。仪表板模块具有打开其他功能的按钮(比如 musicPlayer、imageEditor、fileManager 等)。而且,我还有一个 Common/Base 模块,它将托管所有模块和应用程序本身所需的基本功能。
因此,在这种情况下,仪表板模块依赖于功能模块。并且,Feature 模块依赖于 Common/Base 模块。
我认为 Dashboard 模块将通过其中一个 Feature 模块访问 Common/Base 模块,但它没有用。我无法从 Dashboard 模块访问 Common 模块中的类。
那么,现在,我必须将 Common 模块的依赖添加到 Dashboard 模块中,对吗?
Dashboard -> Common
Dashboard -> Feature_1 -> Common
Dashboard -> Feature_2 -> Common
Dashboard -> Feature_3 -> Common
Dashboard -> Feature_4 -> Common
如您所见,Dashboard 模块直接需要 Common 模块,您认为它会与 Feature 模块中的 Common 模块发生冲突吗,为什么或为什么不?
而且,将来如果功能模块必须相互访问,那将是一个糟糕的设计,对吧?有循环依赖?
我不知道这个实现是否是一个好的方法。我该如何处理?这是我第一次尝试模块。
最佳答案
如果您创建一个启用了“instantapp”的新 Android 应用程序,那么 Android 将设置以下结构:
base
|
feature
/ \
app instantapp
您的案例是通过将 base
替换为 common
并将 dashboard
视为附加功能来处理的。
common
/ | \ ...\
feature feature feature ... dashboard
\ | / .../
app
您的仪表板
应该是一个简单的 View ,引用显示在其上的摘要。这些摘要实际上应该由各自的功能处理,因为它们可以访问相关的模型组件,并且最适合为仪表板提供摘要。这应该使得 dashboard
不必导入 common
模块。
两个高度相互依赖的 feature
要么作为一个单一的功能更好,即将它们合并在一起,要么分成三个组件,包括一个公共(public)组件和剩下的任何部分原来的两个特征。
common
/ \ ...\
sub.feature feature ... dashboard
/ \ / /
feature feature / /
\ \ / .../
------ app
如果您的 dashboard
模块确实需要导入 common
模块,这样做应该没问题,大多数语言都处理 common
的情况> 由每个 feature
进行的导入不会破坏稍后由 dashboard
进行的相同导入。如果语言不支持这一点,那么您必须考虑使用 private
/public
声明来隔离它。
关于android - 关于一个应用程序中的多个模块(带 Activity 的库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057342/