iOS学习之MVC模式

  1. Modal 模型对象:

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

  1. View 视图对象:

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

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

  1. Controller 控制器对象:

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

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

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

实际开发中,M虽然本意是业务模型,但通常被理解为数据库操作层。

  V即界面层,这个没有异议。

  C则被理解为业务层。

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。

  1. M模型(更多的是数据库模型)

(1)创建数据库、创建相应的表

(2)完成针对数据库各个表的增、删、改、查的操作类

(3)映射数据库各个表的实体类(这个实体类的作用就是沟通数据库层(M)和控制层(C)的桥梁,同时这个实体类也将担负其后台数据(xml、sbjson等)与本地数据的沟通和存储)

 本层要实现的功能

  数据库各个表的增、删、改、查

  1. C控制

  这个层的意义就在于确保M和V的同步。我个人理解,这层不仅叫控制层,更应该叫业务层。

  本层要实现的功能:

界面控件中数据和事件

  1. V视图

不用多讲了,在ios中,这个层主要由.xib文件完成。如果客户由自定义需求,则在.m文件中实现。本层实现的功能就是控件的布局。

时间: 2024-08-05 23:10:45

iOS学习之MVC模式的相关文章

iOS学习之MVC,MVVM,MVP模式优缺点

为什么要关注架构设计? 因为假如你不关心架构,那么总有一天,需要在同一个庞大的类中调试若干复杂的事情,你会发现在这样的条件下,根本不可能在这个类中快速的找到以及有效的修改任何bug.当然,把这样的一个类想象为一个整体是困难的,因此,有可能一些重要的细节总会在这个过程中会被忽略. 分析三种模式的优缺点: MVC 即 Modal View Controller(模型 视图 控制器). 20 世纪 80年代为编程语言 Smalltalk-80 发明的一种软件设计模式 MVC 的几个明显的特征和体现: 

iOS:使用MVC模式帮ViewController瘦身

如何给UIViewController瘦身 随着程序逻辑复杂度的提高,你是否也发现了App中一些ViewController的代码行数急剧增多,达到了2,3千行,甚至更多.这时如果想再添加一点功能或者修改现有逻辑变得让人无比头疼.如果你遇到了这类问题,那是时候停下来了,思考一下如何更好地组织代码,给VC瘦身.本文将会阐述如何结合MVC的思想帮你的VC瘦身同时提高复用和可扩展性. 一.开发中常见的现象和缺点 iOS中最常见的一种设计模式就是MVC,但在实际开发过程中,我们因为这样.那样的原因让单纯

IOS常用设计模式——MVC模式(IOS开发)

Cocoa Touch中的MVC模式中,模型和视图不能进行通信,所有通信都是控制器完成. - 模型:是个较为特殊的对象,本质是视图的数据,Text Field输入的内容,Button上的标签都是模型,不一定非要创建一个模型类. - 视图:UIView,这个比较容易理解,向控制器发送请求. - 控制器:更新视图作为对用户请求的回应,更新模型的数据. 模型里面就是数据,视图就是个界面,控制器是中间的更新媒介. 1.触摸myButton时候,会触发方法. 2.视图控制器实现了一些委托和数据源的协议.

ios 深刻理解MVC模式—代理方法

在oc中MVC模式得到广泛应用,所谓MVC,即模型Model,视图View,控制器Controller 控制器通过模型数据控制视图,而代理方法则是控制器控制视图的所使用的方法. 使用代理所需要满足的条件: 1.代理协议:里面声明了代理方法 2.视图View定义满足代理协议的代理属性,例如 @property(nonatomic,weak)id<UITableViewDelegate>delegate; 3.给View提供一个或几个方法,方法内View的代理view.delegate 调用它的代

JavaWeb学习(十): MVC模式

前情摘要: MVC 是一种设计思想(模式),并不是某种编程技术. MVC 由哪几部分组成? M: Model -- 用于实现某种功能. 封装应用程序的数据结构和事物逻辑,几种体现应用程序的状态,当数据状态发生改变的时 候能够在视图里面体现出来. 主要用 JavaBean 来实现(关于 JavaBean 可以看上一篇文章) V: View -- 展示给用户一个较好的页面. 它是 Model 的外在表现,当模型状态改变时会有所体现. 主要通过 JSP 来实现. C: Controller -- 分发

iOS通用的MVC模式项目框架MobileProject

最近项目比较不赶的情况下,决定把一些通用.常用的内容集成在一个项目框架中,意在新项目中可以快速搭建:其实经过几个项目后,总是有一些重复的创建工作,可以使用本项目的内容直接进行开发:采用的是MVC的分层模式,本文将会重点介绍关于层级的划分及一些已经集成的第三方功能介绍:当然本项目的源代码已经上传到gitHub(地址:https://github.com/wujunyang/MobileProject)上面,当然要是对你有帮助记得给个星,假如大家有时间也可以一起完善,或者有什么问题也可以及时留言:

iOS学习之MVC设计模式的理解

cocoa程序设计中的 模型-视图-控制器(MVC)范型. 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是至关重要的. 一.MVC的概念 MVC是Model-VIew-Controller,就是模型-视图-控制器,这些都是什么东西呢? MVC把软件系统分为三个部分:Model,View,Controller.在cocoa中,你的程序中的每一个object(对象)都将明显地仅属于这三部分中的一个,而完全不属于另外两个. Model = 你的程序是

ios开发中MVC模式的理解

MVC是80年代出现的一种软件设计模式,是模型(model),视图(view)和控制(Controller)的缩写. 其中Model的主要功能包括业务逻辑的处理以及数据的访问,这是应用程序的主体部分. View的主要功能是用来跟用户进行交互,实现数据的收集和展示,视图是用户看到和直接操作的的界面,它只接受用户的操作. Controller的主要功能用来在视图和模型之间建立联系并控制数据的走向,控制器本身不输出任何内容和对数据做任何处理. 用个简单的例子来说明三者的关系 一个简单的计算器,它除了我

iOS里面MVC模式详解

MVC是IOS里面也是很多程序设计里面的一种设计模式,M是model,V是view,C是controller.MVC模式在ios开发里面可谓是用得淋漓尽致. 以下是对斯坦福大学ios开发里面MVC模式的一段话的翻译 主要的宗旨是把所有的对象分为3个阵营,model阵营,view阵营,或者是controller阵营 model(APP的目的) 举个例子,你要做一个打飞机的游戏,那么这个就是太空中这辆飞船的位置,什么机型,每个飞船有多少机枪,护甲有多少等等.这就是model所做的事,而飞机在屏幕上的