在ios开发里面,我们经常用到各种设计模式, 其中最经典最常用的就是mvc模型,它们的设计模式是怎样的呢?
可以通过下面的两张图来了解:
图一:单个MVC之间的通信方向
M(模型)和V(视图)还有C(控制器)的通信方向可以简单通过汽车在马路上行驶指示线来表示,模型和控制器之间是控制器可以访问模型,而模型不能访问控制器,但是有些时候模型发生变化了,要告诉控制器,就要通过一个叫广播台的机制来广播,控制器收到广播后,会做出特定的操作,比如:更新视图。
视图和控制器之间的通信方向是,控制器可以访问视图,但是视图不能访问控制器,当视图发生改变或者需要数据时,就会通过Action的Outet输出口来告诉控制器,视图发生改变了,控制器就会执行特定操作,比如访问模型,更新UI等。
而视图和模型之间的通信是不允许的。
图二:多个MVC模型之间的设计
当有多个MVC时,它们是通过把其中的一个mvc作为另一个mvc的V,只有一个单向的跳转,这样的好处就是,它们之间的业务逻辑不会太复杂,当程序出现问题时就不会很混乱,可以快速找出问题出现在哪?