Android mvvm mvc mvp到底是什么?简述mvvm mvc mvp

    xiaoxiao2021-03-26  21

    复杂的软件必须有清晰合理的架构,否则无法开发和维护。在这里简述一下这三种结构的区别。

    MVC

    传统模式

    MVC(Model-View-Controller)这个应该是应用最广泛也是最早的开发架构。 MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控制器(Controller):业务逻辑 模型(Model):数据保存

    View传送指令到Controller,Controller完成逻辑改变Model状态。Model状态的改变影响View的变化。 举个例子: 在Android程序中,界面中有一个按钮(View),点击按钮,通过网络类进行网络请求(Controller),请求完成通过Bean类存储数据(Model),然后根据数据更新界面显示(View) 所有的通信都是单向的,按钮能够控制网络更新,但是网络类不能更改界面。网络类能更新数据,但是数据类不能控制网络,数据类能更新界面,但是界面类不能更新数据。

    MVP

    MVP只是将MVC中的C改成了P(Presenter),同时也改变了通信方向。

    更部分之间的通信都是双向的,而且view与model不直接发生联系。都是通过Presenter传递。 这种模型也曾风靡一时,曾经我做过的一个项目就是以此为框架的。 这里举一个简单的例子,比如在viewpager中有多个fragmen,每个fragment的布局相似,但是数据模型不同,我们可以让view进行复用,每个view设置不同的Presenter,不同的Presenter有不同的Model,例如,有一个界面展示相关用户列表(数据模型User),一个展示消息列表(数据模型Message)。对于数据的下载处理,可以放在Presenter中,view中不放任何业务处理逻辑,所有的逻辑都在Presenter中。这样更加便于开发和维护。

    MVVM

    MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

    唯一的区别是,它采用双向绑定:Model的变动,自动反映在 ViewModel,反之亦然。 由于使用MVP会使Presenter中的代码逻辑变得臃肿,所有用ViewModel代替。ViewModel和View之间不是通信的关系而是绑定的关系。这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui。

    转自:http://www.jianshu.com/p/fc1f75df5440

    转载请注明原文地址: https://ju.6miu.com/read-659616.html

    最新回复(0)