我的问题是,作为 Android 开发人员或 Android 应用程序架构师,我如何根据应用程序要求在 MVC、MVP 和 MVVM 之间决定下一个应用程序应该使用哪种架构模式来构建应用程序。
提前感谢您的回答。
好的,这是我做的方式:
MVC: 如果你只使用简单的Activity和Fragment来构建应用程序,没有使用Dagger、没有使用任何DI框架、没有分层,我不建议你这么做。除非你的应用程序只有一个Activity和一个界面,否则你应该使用将应用程序分成层的架构。使用SDK中的类构建的老式Android MVC架构适用于真正非常小的项目。
MVP: 现在,MVP架构是最稳定的架构之一,实现它时不需要多思考,已经在各个地方得到了很好的定义。简而言之,你只需要你的UI(Fragment/Activity)、View接口将在该UI中实现并将从Presenter中用作回调的接口,Presenter接口、Presenter实现、Repositories、Repositories接口和UseCases或Interactors。MVP架构中的所有内容都非常明确,所有层之间都是分开的,通信机制通常通过回调接口完成。
MVVM: 这绝对是未来默认使用的架构(我认为最长需要1年)。我们通过MVVM架构摆脱了大量的样板代码。使用LiveData更简单地实现层之间的通信。在MVP中创建新屏幕时不需要定义500个组件。
多模块架构 vs 单一模块架构: MVVM和MVP都可以实现多模块架构或单一模块架构。我认为这个选择比选择MVVM和MVP更重要。如果你知道你的应用程序将有一个庞大而复杂的业务逻辑,比如某种社交网络应用程序,那么你应该使用多模块架构,这将允许你将特性分成模块,构建时间(如果模块引用和依赖注入正确执行)将近似线性,并且这将帮助你与团队舒适地合作。如果你选择单一模块架构,请记住,随着添加新库和新特性,构建时间会增加。如果你知道项目不足以使用多模块架构,那么这是你正确的选择。并且你总是可以在MVP/MVVM架构下管理你的类,将单一模块项目转换为多模块项目。
我曾经参与过一些项目,在那里我首选多模块架构,因为我知道该项目将拥有很多特性。但我的第一个想法总是使用MVP架构、用Kotlin编写的单模块结构,如果你对代码进行良好的组织,你总是可以将你的项目转换为多模块架构。
MVVM同样很不错,但我从未在使用多模块架构的项目中使用过MVVM,我不确定在UI的xml中使用数据绑定是否会影响其他开发人员的工作。我仍需要尝试一下。
TL;DR: MVP是目前最好的选择,记得让所有的架构组件保持整洁,每个组件都有其接口和实现分离。MVVM肯定是未来,但我不会在大型多模块项目中使用它,如果您将其用于单个模块项目,那么完全没问题。
如果您想查看一些架构示例,请查看我的存储库:
如果您有任何其他问题,请让我知道。