MVC设计模式(转)

转载 2016年08月30日 11:00:55

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于我们程序的组织合理性。

这里写图片描述

模型对象

模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。例如,模型对象可能是表示游戏中的角色或地址簿中的联系人。用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。

视图对象

视图对象是应用程序中用户可以看见的对象。视图对象知道如何将自己绘制出来,并可能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此,在 MVC 应用程序中,视图对象通常与模型对象分离。

在iOS应用程序开发中,所有的控件、窗口等都继承自 UIView,对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现。

控制器对象

在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。

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

对于不同的UIView,有相应的UIViewController,对应MVC中的C。例如在iOS上常用的UITableView,它所对应的Controller就是UITableViewController。


注意:
1. Model和View永远不能相互通信,只能通过Controller传递。
2. Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。
3. Controller可以直接与View对话,通过outlet,直接操作View,outlet直接对应到View中的控件,View通过action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是Controller从Model中取得并经过加工了)。Controller是View的代理(delegate),以同步View与Controller。

以上内容转自柳志超博客

什么是MVC设计模式

直接上图,其中model 和view大家经常写,就不说了 有人可能并不清楚controller 到底是啥,其实就是经常写的 data source ,delegate,outlet什么的 先撇...
  • x32sky
  • x32sky
  • 2015年04月06日 20:58
  • 8316

初识MVC——MVC与三层/MVC与设计模式

题记:对于刚接触项目的菜鸟来说,MVC是一个新鲜的东西,浅显的知道MVC是分为MODEL、View和controler层,于是觉得它与我们曾经用到的三层架构相似,于是就错误的混到了一起。由于想要知道它...
  • u012581322
  • u012581322
  • 2015年12月16日 21:53
  • 816

常用设计模式之MVC模式详解

MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。...
  • u011877416
  • u011877416
  • 2013年10月26日 09:05
  • 5997

MVC设计之MVC设计模式(介绍)

mvc介绍; 首先先引用一个百度百科的介绍: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件...
  • qiandublog
  • qiandublog
  • 2016年10月06日 19:12
  • 6860

MVVM设计模式与MVC模式

如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller, 即MVC。MVC是构建iOS app的标准模式。在本文,我将重温一下MVC是什么,详述它的缺点,并且告诉你...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年02月26日 19:41
  • 921

为什么MVC不是23中设计模式之一?

并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Stra...
  • u011500356
  • u011500356
  • 2016年03月02日 11:18
  • 1374

浅谈什么是MVC设计模式

什么是MVC?      MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据...
  • ricky73999
  • ricky73999
  • 2017年02月23日 23:51
  • 1299

主流MVC框架的设计模式及遵守的软件设计原则

本文以主流的MVC框架为例,比如Java 的SSH、PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式;鉴赏他们的代码实现,查看设计者们都遵...
  • Zuocheng_Liu
  • Zuocheng_Liu
  • 2015年02月16日 21:14
  • 1997

unity3d MVC设计模式

 动机         和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK。另外至关重要的是, 我们想尽快加速迭代的过程。使用MVC模式来进行设计,已经被业界证明了是...
  • qq_27361571
  • qq_27361571
  • 2016年03月02日 14:22
  • 699

什么是MVC设计模式,为什么使用MVC?

MVC 全称Model(模型)-View(视图)-Controller(控制器),这是一种开发模式,他的好处是可以将界面和业务逻辑分离。     Model(模型),是程序的主体部分,...
  • LPlanguage
  • LPlanguage
  • 2017年04月21日 16:09
  • 2384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MVC设计模式(转)
举报原因:
原因补充:

(最多只允许输入30个字)