> 原文出處: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)
本文旨在總結歸納筆者自己在開發過程中對于架構設計的理解,順帶一些筆者對控制器代碼瘦身的總結。
> 在此聲明,以下文章的觀點為個人觀點,如果你覺得筆者的觀點存在問題,歡迎在討論區交流。