一文搞懂三大经典的应用架构(mvc mvp mvvm)

1、什么是MVC架构?

2、什么是MVP架构?

3、什么是MVVM架构?

4、Android推荐的MVVM架构实现?

1、什么是MVC架构?

  • MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。
  • 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与《设计模式》中的观察者模式是完全一样。

MVC架构示意图:

一文搞懂三大经典的应用架构(mvc mvp mvvm)

mvc

1.1 为何用MVC?

  • 从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式。
  • 从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,这样,界面设计人员可以直接参与到界面开发,程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。


1.2 Android中的MVC

  • 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入。
  • 控制层(Controller):Android的控制层通常是在Acitvity中实现。
  • 模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。


2、什么是MVP架构?

  • MVP (Model-View-Presenter):MVP其实是由MVC演变而来的,其中的M依然是指逻辑模型,V依然是指视图模型,而P(中间桥梁)则代替了C成为了逻辑控制器的角色。

MVP架构示意图:

一文搞懂三大经典的应用架构(mvc mvp mvvm)

mvp

2.1 MVC和MVP区别

  • MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部;
  • MVC中View会直接从Model中读取数据而不是通过 Controller。我们知道在MVC里,View是可以直接访问Model的。从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。
  • 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,即View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。


2.2 MVP的优缺点

MVP优点:

  • 1、模型与视图完全分离,我们可以修改视图而不影响模型 ;
  • 2、可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部 ;
  • 3、我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  • 4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)

MVP缺点:

  • 1、由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。
  • 2、还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。


3、什么是MVVM架构?

  • MVVM(Model-View-ViewModel):MVVM和MVP的区别其实不大,只不过是把presenter层换成了ViewModel层;再有就是View层和ViewModel层是相互绑定的关系,当我们更新ViewModel层的数据的时候,View层会相应的更新UI。

MVP架构示意图:

一文搞懂三大经典的应用架构(mvc mvp mvvm)

mvvm


3.1 MVVM的通信方式:

  • MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部;
  • MVVM它采用的是数据绑定(data-binding)方式,而且是双向绑定:View绑定到ViewModel,然后执行一些命令在向它请求一个动作。而反过来,ViewModel跟Model通讯,告诉它更新来响应UI。


3.2 MVVM优点

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点:

  • 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的”View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  • 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
  • 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
  • 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。


4、Android推荐的MVVM架构实现?

直接上图:

一文搞懂三大经典的应用架构(mvc mvp mvvm)

android mvvm推荐

版权说明:部分内容摘自网络,如涉及版权问题,请私信联系予以删除,谢谢!


分享到:


相關文章: