我问这个问题是为了了解社区如何为android平台中的每个项目选择正确的体系结构,这样我就可以更好地了解自己是否走上了正确的道路。 我已经是一位经验丰富的开发人员,并且已经体验并实现了Android的大多数主要架构模式(即MVC,MVP,MVVM ...)。
我的问题是,作为一名Android开发人员或Android应用程序架构师,我如何根据MVC,MVP和MVVM之间的应用程序需求,决定应该基于哪种架构模式构建我的下一个应用程序。
谢谢。
答案 0 :(得分:3)
好吧,这是我的做法:
MVC:如果您要谈论的是在App中仅使用简单明了的活动和片段,而没有Dagger,没有任何DI,没有层,那么我在任何时候都不会推荐这样做。除非您的应用只是一个活动和一个屏幕,否则您应始终使用将应用划分为多个层次的体系结构。除非您要构建一个真正的真正小项目,否则仅使用SDK中的类构建的老式Android MVC体系结构是不合适的。
MVP:如今,MVP架构是目前最稳定的架构之一,实现它时没有太多的猜测,它已经在所有地方得到了很好的定义。简而言之,您只需要UI(片段/活动),将在该UI中实现的View接口以及将用作Presenter的回调,Presenter的接口,Presenter的实现,存储库,存储库接口以及用例或交互器。 MVP体系结构中的所有事物都定义得很好,所有层之间都是相互隔离的,并且通信机制通常是通过回调接口来完成的。
MVVM:肯定是将来将默认使用的体系结构(我认为是1年)。 MVVM体系结构消除了很多样板代码。使用LiveData,层之间的通信要简单得多。创建新屏幕时,无需像MVP中那样定义500个组件。
多模块体系结构与单模块体系结构:MVVM和MVP均可实现多模块体系结构或单模块体系结构。我认为这种选择比在MVVM和MVP之间选择更为重要。如果您知道自己的应用程序将具有庞大而复杂的业务逻辑,例如某种社交网络应用程序,那么您应该使用多模块架构,这将允许您将功能保持在模块之间,构建时间(如果模块引用并且正确完成了依赖项注入)将是线性的,它将帮助您与团队一起舒适地工作。如果选择单个模块体系结构,则需要记住,随着添加新库和新功能,构建时间将增加。如果您知道该项目对于多模块体系结构而言还不够复杂,那么这是您的正确选择。如果您在MVP / MVVM架构下保持类的井井有条,则始终可以将单模块项目转换为多模块项目。
我曾经在项目中选择了多模块架构,因为我知道该项目将具有很多功能。但是我的第一个主意是始终使用MVP架构,使用Kotlin的单个模块,如果您保持类的井井有条,则始终可以将项目移至多模块架构。
MVVM确实也很好,但是我从来没有在使用MVVM的多模块体系结构的项目中工作过,我不确定使用Databinding对UI xml进行更改是否会与其他从事该项目的开发人员混在一起。我仍然需要尝试。
TL; DR:MVP是目前的最佳选择,请记住将所有架构组件保持整洁,每个组件的界面和实现均应分开。 MVVM绝对是未来,但我不会将其用于大型多模块项目,如果您将其用于单个模块项目则完全可以。
如果想查看一些体系结构示例,请查看我的仓库:
让我知道您是否还有其他问题。