【iOS】MVC模式

MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,ta最早出现在SmallTalk语言中。现在,很多计算机语言和架构都采用了MVC模式。


MVC模式概述

MVC模式是一种设计模式,由3部分组成,这3部分的作用如下:

  • 模型(Model)。保存应用数据的状态,统一管理一些数据
  • 视图(View)。存放视图,为用户展示信息
  • 控制器(Controller)。接受用户请求,统一调控程序的所有工作,ta负责处理View和Model的事件

对应于哲学中的“内容”与“形式”,在MVC模型中,Model是“内容”,ta存储了视图所需要的数据,View是“形式”,是外部表现方式,而Controller是它们的媒介。

需要重点关注的是,Model与View不能进行任何通信,所有的通信都是通过控制器完成的,看下图:

【iOS】MVC模式_第1张图片

    • Controller和View之间可以通信,Controllor通过outlet(输出口)控制View,View可以通过target-actiondelegate或者data source(想想UITableVeiwDatasource)来和Controller通信
    • Controller在接收到View传过来的交互事件(View就是完成让人和程序的交互的呀,比如按B1按钮)之后,经过一些判断和处理,把需要Model处理的事件递交给Model处理,Controller对Model使用的是API
    • Model在处理完数据之后,如果有需要,会通过Notification或者KVO的方式告知Controller,事件已经处理完,Controller再经过判断和处理之后,考虑下一步要怎么办(是默默无闻的在后台操作,还是需要更新View,这得看Controller的“脸色”行事)。这里的无线天线很有意思,Model只负责发送通知,具体谁接收这个通知并处理它,Model并不关心,这一点非常重要,是理解Notification模式的关键

MVC模式能够完成各司其职的任务模式,达到 “低耦合高内聚”,大大优化了代码的结构、代码量

低耦合: 模型、视图和控制器之间解耦,debug时易于定位是三者哪部分出了问题
高内聚: 模型、视图和控制器各自的职责清晰,功能相关代码封装在各自的组件中

这种设计使得代码更具灵活性、可维护性和可测试性


实际案例

【iOS】计算器App仿写

你可能感兴趣的:(ios,mvc,objective-c)