多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 原文出处:http://sindrilin.com/ios-dev/2016/07/13/MVC架构杂谈 > 作者:[sindriLin](http://sindrilin.com/about "sindriLin") **本系列文章经作者授权在看云整理发布,未经作者允许,请勿转载!** # MVC架构杂谈 > `MVC`是软件工程中的一种软件架构模式,它把软件系统分为三个基本的部分:模型`Model`、视图`View`以及控制器`Controller`。这种模式的目的是为了实现一种动态的程序设计,简化后续对软件系统的修改和扩展,并使得程序的某一部分的复用成为可能。三个部分按照其各自的职责划分: > * **数据Model**: 负责封装数据、存储和处理数据运算等工作 > * **视图View**: 负责数据展示、监听用户触摸等工作 > * **控制器Controller**: 负责业务逻辑、事件响应、数据加工等工作 > 在传统的`MVC`结构中,数据层在发生改变之后会通知视图层进行对应的处理,视图层能直接访问数据层。但在iOS中,`M`和`V`之间禁止通信,必须由`C`控制器层来协调`M`和`V`之间的变化。如下图所示,`C`对`M`和`V`的访问是不受限的,但`M`和`V`不允许直接接触控制器层,而是由多种`Callbacks`方式来通知控制器 [![](http://sindrilin.com/images/MVC%E6%9E%B6%E6%9E%84%E6%9D%82%E8%B0%88/1.jpeg)](http://sindrilin.com/images/MVC%E6%9E%B6%E6%9E%84%E6%9D%82%E8%B0%88/1.jpeg) 本文旨在总结归纳笔者自己在开发过程中对于架构设计的理解,顺带一些笔者对控制器代码瘦身的总结。 > 在此声明,以下文章的观点为个人观点,如果你觉得笔者的观点存在问题,欢迎在讨论区交流。