gpt4 book ai didi

android - 关于一个应用程序中的多个模块(带 Activity 的库)

转载 作者:太空狗 更新时间:2023-10-29 14:41:05 27 4
gpt4 key购买 nike

我必须制作一款功能强大的应用。这些功能可以根据客户的不同而增长。我想有两个不同的功能模块/项目,但只有一个应用程序/apk。我有一个仪表板模块,它有一些按钮可以打开许多其他功能(它们的 Activity )。真的可以像这样拥有一个应用和多个模块吗?

我在看this video作为引用。我想,也许,从那个视频来看,通用模块是适合我的应用程序。 buyer-project 和 seller-project 可以是库。

然后,我画这个图来问这个问题。 diagram

所以,在图中,我有一个仪表板模块。仪表板模块具有打开其他功能的按钮(比如 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 模块发生冲突吗,为什么或为什么不?

而且,将来如果功能模块必须相互访问,那将是一个糟糕的设计,对吧?有循环依赖?

circular_dependencies

我不知道这个实现是否是一个好的方法。我该如何处理?这是我第一次尝试模块。

最佳答案

如果您创建一个启用了“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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com