前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊iOS开发里的MVC模式

聊聊iOS开发里的MVC模式

作者头像
JoeyBlue
发布2021-09-07 14:42:31
5250
发布2021-09-07 14:42:31
举报
文章被收录于专栏:代码手工艺人
Image1 icon
Image1 icon

最近项目要重构,首当其冲的就是代码结构,因为很多原因之前很少考虑代码结构的事情。终于要抽出一部分时间来重构这个项目,首先是整个项目的结构和代码逻辑不太符合MVC,又顺便了解了一下iOS里的MVC模式的概念。首先MVC模式不光定义了每一部分在整个应用中扮演的角色,也定义了各个部分相互沟通交流的方式。每一部分都扮演着不同的角色,分工明确,降低耦合,减少依赖,使得每一部分都能够复用,这也是MVC模式的意义和目的所在。下面就简单描述一下MVC模式里对每一个角色的职能和责任。

Model

Model层对象应该是封装了一定的数据规范,并且定义了管理和处理这些数据的逻辑和计算。简单说就是Model对象不仅定义了数据结构,还要包括对数据结构的操作和处理逻辑。比如从网络、sqlite、UserDefault里获取需要在View里展现的数据以及存入用户感兴趣的数据等等。其实Model里是包含业务逻辑的,这一点和Web开发差异很大,之前在用Java开发Web程序时使用MVC,M就是POJO,只包括定义数据结构,不包含对这些数据的处理(处理的部分放在一个叫Service层里),也称之为贫血模型。相对应的充血模型就类似这里的M,是包含对数据的操作和处理,ROR里的ActiveRecord就是这样的。

View

View层的理解就很简单了,就是用户能看得见的东西,比如UIKit里的各种系统自带控件等。View对象应该知道如何把自己展示给用户并且对用户的操作做出回应。View层对象的主要用途在于展示出应用的Model层数据并且允许用户通过交互修改这些数据。

Controller

Image2 icon
Image2 icon

Controller层对象相当于一个中间人,负责协调应用中的View层对象和Model层对象的关系,也是View和Model相互沟通的媒介。除此之外,Controller还负责组织和协调应用中的任务以及管理其他对象的声明周期。

相互的沟通

Image3 icon
Image3 icon

Model层不直接和View沟通,当Model层对象改变(比如通过网络获取到了新的数据),它会通知Controller对象,Controller对象收到通知更新对应的View。当View层有改变(比如用户通过交互创建或修改了数据,称为User Action),View会通过Controller对象去创建或修改Model层的数据。 Model层和View层是相互不知道对方的,它们的沟通是通过Controller这个中间人来协调处理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-05-142,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Model
  • View
  • Controller
  • 相互的沟通
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档