Android MVX 模式

什么是架构:

架构模式是在给定上下文的软件架构中,针对常发生问题的一种通用、复用的解决方案,架构模式类似于软件设计模式,但是范畴更广。

常见的有:分层架构(对 Android 应用层开发来讲更常见)、事件驱动架构、微内核架构、微服务架构、云架构。

好的架构设计会更易维护、拓展等,Android 架构模式常用的有三种:MVC,MVP,MVVM。

其本质是一样的,主要是为了在一定程度解耦 Model 层与 View 层,并通过控制层来做逻辑处理或一些其他的工作。

设计架构的目的

  • 对于程序来讲;是为了程序后期的开发与维护,使程序模块化,做到模块内部的高聚合,和模块与模块之间的低耦合。
  • 对于团队来讲;便于业务组的开发者进行快速开发,提升团队工作效率。

主要还是要根据业务来选择合适的架构,一般来讲

  • MVC;适用于小项目或是项目初期,时间紧,业务不复杂的场景。

    MVC 是大多数项目在使用的,或是项目初期在使用。可以在一定程度上隔离 Model 层和 View 层。优点是便于理解,开发快速,缺点就是业务复杂时,控制层会代码量过多,不利于维护。

    对于 MVC 的工作原理,当我们要处理一项业务时,首先告诉控制层,控制层交给 Model 去处理,Model 层做两件事情,第一件事情是创建数据原型,第二件是做业务逻辑处理,最后告诉 V 层事情处理好了,V 层让C 层来显示处理结果。也有可能是逆向的,C 层向 V 层获取数据,V 层向 M 层来要数据处理结果。

  • MVP;适用于各种场景,但开发周期可能加倍,建议中后期迭代。(项目太大(例如:编译就有8分钟),需要分层非常清晰(开发的人太多了))

    MVP 则是 MVC 的架构升级版,在项目中后期,或时间充裕时,可以考虑更改为 MVP 架构,它的特点是可以完全解耦 M 层与 V 层,对于需求变更频繁,业务逻辑复杂的情况能够更好的处理,便于迭代维护。但缺点就是接口类可能过多,因为 P 层与 V 层需要接口交互,导致开发效率低下,需要更多的时间。

  • MVVM;适用于展示性业务,页面更新频繁(如网易云音乐,腾讯视频),且业务逻辑与 UI 交互不要过于复杂。例如新闻类,电商类。

    可以启用DataBinding+ViewModel+LiveData+LifeCycle实现数据驱动开发