美文网首页APP
Android关于MVC / MVP / MVVM / Andr

Android关于MVC / MVP / MVVM / Andr

作者: supylc | 来源:发表于2018-10-25 14:26 被阅读64次

架构是什么

  • 架构是又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计
  • 架构模式是前辈们几十年留下的经验之谈,我们应心存敬畏
  • 深刻理解了架构模式,并做一些优化,对应用带来实在的或者潜在的实惠,是我们的基本目标
  • 利用架构的思想,设计出特别适合本应用场景的架构
    一个开发效率高,扩展性强,维护成本低的架构,却又不像MVC/MVP,又有一点思想的相似性,也许这才是最好的形态,武术的最高境界,就是无招。
  • 没有一个人能准确描述MVC是具体形态,10个人有10种表达。
    因为架构模式是一种开放的设计思想,没有具体形态,开发者应该有适合自己的定制架构模式。

MVC/MVP/MVVM

MVC/MVP/MVVM,是目前比较流行的三种移动开发架构,思想形式不同,但目的几乎一样,就是如何分离模型层和视图层,如何组织好软件架构,如何做到更快的开发,更好的维护。

MVC

MVC架构,就是用户触发UI事件,通过controller,请求Model层,并映射model响应到View层刷新或通知View刷新。

在Android里面,

  • controller层,作为事件(或请求)入口,事件源可以是view控件的点击事件,也可以是代码触发打开一个activity或service。controller功能就是接收事件,并转发给model做事件响应。Controller依赖Model
  • model层,事件响应就是请求Model层的读写服务,甚至是一系列组件交互,最后把结果通知到View层。
  • view层,负责触发事件,并接收model的刷新通知。包含打开一个新的Activity,或者View/VIewGroup的UI刷新。View依赖Model

如下图,


MVC架构图.png

MVP

MVP是一种主持架构模式,view层和model层可以独立并行开发,并通过中间人Presenter来请求模型层和刷新视图层,在这里,视图和模型是完全分离。

在Android里面,

  • Presenter层,作为事件(或请求)入口,事件源可以是view控件的点击事件,也可以是代码触发打开一个activity或service。Presenter接收事件,并转发给model做事件响应。接收到响应结果,通过定义的View接口通知到View刷新。Presenter依赖Model,Presenter依赖自定义View接口
  • model层,请求Model层的读写服务,甚至是一系列组件交互,最后Presenter接收响应结果。
  • view层,负责触发事件,和刷新视图。包含打开一个新的Activity,或者View/VIewGroup的UI刷新。
    与MVC最大的不同,是View并没有依赖Model
    如下图,
    MVP架构图.png

MVVM

MVVM,其实是MVP的改进版,通过数据绑定的方式,直接定义ViewModel的抽象UI行为来跟View绑定。只要数据改变,UI就会改变。

在Android里面,

  • ViewModel层,ViewModel接收事件,并转发给model做事件响应。接收到响应结果,通知View刷新。ViewModel依赖View,ViewModel依赖Model
  • model层,请求Model层的读写服务,甚至是一系列组件交互。
  • view层,负责触发事件,和刷新视图。包含打开一个新的Activity,或者View/VIewGroup的UI刷新。
    与MVP最大的不同,是跟View更紧密,更高效,缺点是不够灵活,比如一个复杂的View视图,有大量的刷新UI操作,就需要定义好多操作。
    如下图,
    MVVMPattern.png

Android Architecture Components

Android Architecture,是一种基于官方集成的,能自动管理架构生命周期,利用观察者绑定视图和数据的架构。它是一套完整的解决方案,模型跟视图完全分离。我们只关心livedata和视图的同步即可。

如下图,


final-architecture.png
viewmodel-replace-loader.png

附言
以上为个人的经验总结,不当之处欢迎讨论,并持续优化。
微信联系方式: superroye

相关文章

网友评论

    本文标题:Android关于MVC / MVP / MVVM / Andr

    本文链接:https://www.haomeiwen.com/subject/mzmrzftx.html