携手创作,一起成长!这是我参加「日新计划 8 月更文应战」的第25天,点击检查活动概况

MVC形式

MVC是软件工程中的一种软件架构形式,它把软件体系分为三个根本的部分:模型Model(担任封装数据、存储和处理数据运算等作业)、视图View(担任数据展示、监听用户触摸等作业)以及控制器Controller(担任事务逻辑、事情响应、数据加工等作业)。这种形式的意图是为了完成一种动态的程序设计,而且使程序某一部分的重复使用成为或许。还简化了后续对软件体系的修改和扩展,使程序结构更加直观,并使得程序的某一部分的复用成为或许。在其呈现的一段时间后,MVC 产生了很多的变种,例如:MVP、MVVM 等架构形式。

在传统的MVC结构中,数据层在发生改动之后会告诉视图层进行对应的处理,视图层能直接拜访数据层。但在iOS中,Model和View之间禁止通信,必须由Controller控制器层来协调Model和View之间的改动。Controller对Model和View的拜访是不受限的,但Model和View不允许直接触摸控制器层,而是由多种Callbacks(回调)方法来告诉控制器。

iOS中的架构模式

如图所示,是MVC的架构图,接下来是对架构图的解析。

Controller:

Controller目标在一个或许多个View目标和与之相对应的一个或许多个Model目标之间扮演中间人的人物。Model和View目标经过Controller来交代彼此之间的改动。Controller在程序中履行初始设置和坐标跟踪使命,也办理着其他目标的生命周期。

关于交互:Controller将用户View中的操作转变成新的数据(或许是数据更新),再与Model层进行交互。当Model中的数据改动时,Controller再次作为中间人,告诉View进行更新。

Model:

关于交互:用户在View层的生成或修改数据的操作应该经过Controller目标进行交互,而且结果是创立或许更新Model目标。当Model目标发生改动的时候,告诉到Controller目标,终究将对恰当的View目标进行更新。

View:

在交互过程中,将交互事情经过代理、回调的方法上抛到Controller层,在Controller将事情处理完成后,将音讯传递到Model层进行数据处理。当Model层有数据更新时,经过告诉的方法将音讯上抛给Controller层,由Controller层将数据交给View,进行View更新。

存在的问题:Controller层随事务扩展而呈现无限胀大的或许。而且当View层和Model的事务差异越大时,作为“粘合剂”的Controller层就会越复杂,因而引进MVVM来处理这一问题。

MVVM形式

MVVM(Model-View-ViewModel)的责任划分:

Model:完全独立于UI的数据处理逻辑。

View:担任视图展示,这个View可以是ViewController、View等控件。

ViewModel:Model层和View层两层间的数据转换器,并包含数据处理的事务逻辑。

iOS中的架构模式

在开发过程中,项目复杂度越来越高,代码量越来越大,此时MVC保护起来很吃力,因而有人想到把Controller的数据和逻辑处理部分从中抽离出来,用一个专门的目标去办理,这个目标就是ViewModel,是Model和Controller之间的桥梁。MVVM并非直接用VM替换MVC中的C,而是淡化C,因而C并没有消失只是被VM解耦。

经过ViewModel,Controller中的代码变得非常少,易于测试和保护,只需要Controller和ViewModel做数据绑定即可。

\