美文网首页
MV*(MVC,MVP,MVVM)

MV*(MVC,MVP,MVVM)

作者: 芹菜斯_嘉丽 | 来源:发表于2016-12-21 20:18 被阅读0次

https://github.com/livoras/blog/issues/11

1.MVC#

(1)MVC的依赖关系

MVC出了把应用程序分成View、Model层,还额外的加了一个Controller层,它的职责为进行Model和View之间的协作(路由、输入预处理等)的应用逻辑(application logic);Model进行处理业务逻辑。Model、View、Controller三个层次的依赖关系如下:

mvc.png
2.MVC的调用关系

用户的对View操作以后,View捕获到这个操作,会把处理的权利交移给Controller(Pass calls);Controller会对来自View数据进行预处理、决定调用哪个Model的接口;然后由Model执行相关的业务逻辑;当Model变更了以后,会通过观察者模式(Observer Pattern)通知View;View通过观察者模式收到Model变更的消息以后,会向Model请求最新的数据,然后重新更新界面。如下图:

Paste_Image.png
看似没有什么特别的地方,但是由几个需要特别关注的关键点:
(1 View是把控制权交移给Controller,Controller执行应用程序相关的应用逻辑(对来自View数据进行预处理、决定调用哪个Model的接口等等)。
(2 Controller操作Model,Model执行业务逻辑对数据进行处理。但不会直接操作View,可以说它是对View无知的。
(3 View和Model的同步消息是通过观察者模式进行,而同步操作是由View自己请求Model的数据然后对视图进行更新。(精髓!!!!)

4MVC的优缺点

优点:
(1)把业务逻辑和展示逻辑分离,模块化程度高。且当应用逻辑需要变更的时候,不需要变更业务逻辑和展示逻辑,只需要Controller换成另外一个Controller就行了(Swappable Controller)。
(2)观察者模式可以做到多视图同时更新。
缺点:
(1)Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,应用逻辑正确性是无法验证的:Model更新的时候,无法对View的更新操作进行断言。
(2)View无法组件化。View是强依赖特定的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了。因为不同程序的的Domain Model是不一样的

相关文章

  • Vue

    MVC MVP MVVM MVW MV* MVCModel View ControllerModel: 负责提供数...

  • 2018-05-05 一

    一、简介 是一个mvvm框架(库),和angular类似,小巧易上手mvc:mvp、mvvm、mv*、mvx MV...

  • MVC、MVP、MVVM

    MVC、MVP、MVVM 1、MVC和MVP的区别 区别在于MVC的MV之间可以通信,M的改变直接影响V的展示,不...

  • 浅谈MVC/MVP/MVVM(Android)架构设计模式

    一、MVC Android常用的开发模式有MVC、MVP及MVVM,发展到今天,主流的开发模式是MVP,但是MV...

  • vue准备工作

    了解mvc、mvp、mvvm概念http://www.ruanyifeng.com/blog/2007/11/mv...

  • MV*(MVC,MVP,MVVM)

    https://github.com/livoras/blog/issues/11 1.MVC# (1)MVC的依...

  • Android中MVP设计框架浅析

    一、MVP设计模式简介 目前Android设计成熟的框架有MVC,MVP和MVVM,MVP是由MCV演变而来,MV...

  • 一文说透 Android 应用架构 MVC、MVP、MVVM 和

    MVC、MVP 和 MVVM 是常见的三种架构设计模式,当前 MVP 和 MVVM 的使用相对比较广泛,当然 MV...

  • JavaScript MV* 模式

    在JavaScript中最重要的三个MV* 模式:MVC、MVP以及MVVM。 MVC MVC 是一种架构设计模式...

  • Android UI架构初步

    项目中从最初的MVC架构演变为MVVM架构,本文主要通过Google推出的官方实例,学习MVP架构。 MVP/MV...

网友评论

      本文标题:MV*(MVC,MVP,MVVM)

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