美文网首页web前端iOS技术文章
知识小总结十一 (MVC&MVVM)☀️

知识小总结十一 (MVC&MVVM)☀️

作者: LeaderBiao | 来源:发表于2017-02-17 09:40 被阅读110次

MVC

是什么?

  • MVC是Model-View-Controller,就是模型-视图-控制器
    模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。

  • 视图对象是应用程序中用户可以看见的对象,并能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。

  • 控制器对象负责解释在视图对象中进行的用户操作,并将新的或更改过的数据传达给模型对象。模型对象更改时,一个控制器对象会将新的模型数据传达给视图对象,以便视图对象可以显示它。


有什么用?

  • 在MVC模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。

  • 在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。

  • 有利于组件的重用。

  • 各层之间的通信

C⇒M C⇒V

  • Controller可以直接与Model和View通信。

V ⇢C

  • V不能直接与C通信,可以通过action...target(如UIButton的addTarget:action:forControlEvents:)和delegate(如UITableViewDelegate)的方式来与Controller通信。

M ⇢C

  • M不能直接与C通信,可以通过Notification和KVO 的方式来与Controller通信

M V 不能互相通信


MVVM

MVC存在的问题

  • MVC有一种调侃的说法叫Massive View Controller,一个巨大的vc一般少则上千行代码,多则上万行。一般臃肿的vc包括view的构建、网络数据的请求及后续处理、响应逻辑、数据源方法以及其它无关vc的代码,vc成了代码垃圾场,对其进行维护和测试非常困难。View和ViewController的紧密耦合。

是什么?

  • MVVM是Model View View-Model,就是模型-视图-视图模型

Model层

  • 和MVC中的M一样

View层

  • view和view controller正式联系在一起,把它们视为一个组件。

View-Model层

  • 对视图展示数据进行处理,一般流程是,接受vc的事件命令请求及处理相关数据,完事之后将标准展示数据处理好交给vc展示到view上

有什么用?

  • MVVM就是在MVC的基础上加入了一个视图模型viewModel,用于数据有效性的验证,视图的展示逻辑,网络数据请求及处理,其他的数据处理逻辑集合,并定下相关接口和协议。相比起MVC,MVVM中vc的职责和复杂度更小,对数据处理逻辑的测试更加方便,对bug的原因排查更加方便,代码可阅读性,重用性和可维护性更高。MVVM耦合性更低。MVVM不同层级的职责更加明确,更有利于代码的编写和团队的协作。

  • 要对MVVM进行理解,最好通过阅读代码的方式。如https://github.com/lizelu/MVVM。如果要更深入的使用MVVM,可以学习ReactiveCocoa

自行阅读 http://www.cocoachina.com/ios/20150526/11930.html

相关文章

  • 知识小总结十一 (MVC&MVVM)☀️

    MVC 是什么? MVC是Model-View-Controller,就是模型-视图-控制器模型对象封装了应用程序...

  • MVC&MVVM

    摘自 : https://juejin.im/post/593021272f301e0058273468 MVC ...

  • 浅谈MVC&变异MVC&MVP&MVVM

    稍微做过几年开发的一定都听过MVC、MVP、MVVM这些架构名称吧。其实不论我们用哪一种机构模式,总会有一个地方造...

  • iOS MVVM架构总结

    参考:iOS 中MVC设计模式iOS MVVM架构iOS MVVM-框架介绍iOS 架构模式MVVM的实践总结iO...

  • Android知识点总结(六) MVC&&MVP

    出处http://blog.csdn.net/self_study 目录(?)[+] 面试的时候被问到这个问题,用...

  • MVVM总结

    MVVM:将所有的表示逻辑放到ViewModel中,Model 数据转换为 View 可以呈现的东西(在开发中表现...

  • 聊聊iOS开发之MVVM的架构设计

    前言 而MVVM这种新的代码组织方式就可以解决这些问题,本文就MVVM的架构设计做个简单的个人总结。 MVVM概述...

  • iOS - RAC(ReactiveObjC)的简单介绍

    本编文章是我对 MVVM + RAC 知识的一些学习总结了分享,如错误的地方,希望可以各位大佬积极指正。⛽️文章中...

  • Angular2双向绑定及变化检测

    前几天总结了MVC、MVP、MVVM设计模式,其中MVVM的核心机制就是双向绑定。React、Vue、Angula...

  • 小知识总结:

    __block 和 __weak 的区别: __block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还...

网友评论

    本文标题:知识小总结十一 (MVC&MVVM)☀️

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