iOS开发中的MVC、MVP以及MVVM模式

本文详细介绍了iOS开发中的MVC、MVP和MVVM架构模式,阐述了它们的原理、优缺点以及在实际开发中的应用。MVC模式中,Controller承担任务较重,造成View和Controller高度耦合;MVP模式通过Presenter解耦View和Controller,但代码量可能增加;MVVM模式引入双向绑定,降低了耦合度,但可能需要额外的响应式框架支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC

大家都知道MVC是软件工程中的一种架构模式,主要是吧软件系统分为三个部分:模型Model、视图View以及控制器Controller,该设计模式的主要目的就是将数据和视图分离开,可以简化后续对于软件系统的修改和扩展,并且能够使得某些部分进行复用,这三部分的作用职责如下:

  • 数据Model 负责封装数据、存储和处理数据运算等工作
  • 视图View: 负责数据展示、监听用户触摸等工作
  • 控制器Controller: 负责业务逻辑、事件响应、数据加工等工作

在传统的MVC结构中,数据层在发生改变之后会通知视图层进行对应的处理,视图层能直接访问数据层。但在iOS中,MV之间禁止通信,彼此独立,必须由C控制器层来协调MV之间的变化。如下图所示,C持有M与V,它对于MV的访问是不受限的,但是MV不允许直接接触控制器层,而是由多种通知、回调、事件触发等方式来通知控制器的

在iOS的大多数应用程序的代码中MVC模式是这样组织的,view 将用户交互通知给控制器。view 的控制器通过更新 Model 来反应状态的改变。Model(通常使用 Key-Value-Observation)通知控制器来更新他们负责的 view。

由上图可以再次验证以下几点:

  • Model 和 View 永远不能相互通信,只能通过 Controller 传递

  • Controller 可以直接与 Model 对话(读写调用 Model),Model 通过 Notification 和 KVO 机制与 Controller 间接通信。

  • Controller 可以直接与 View 对话,通过 outlet,直接操作 View,outlet 直接对应到 View 中的控件,View 通过 action 向 Controller 报告事件的发生(如用户 Touch 我了)。Controller 是 View 的直接数据源(数据很可能是 Controller 从 Model 中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值