1.MVC具有什么优势,各个模块之间是通过什么方式进行通信的。
MVC是一种设计思想,一种框架模式。
M:本应该是处理应用程序逻辑的部分,但通常只负责数据的存储。
V:很明显,他就是C的小弟,一切的行动都听从C,不过界面的展示还是靠M来显示内容的。但M和C不能直接通信,必须依靠与C。
C:一个中间站,它控制着M如何呈现在屏幕上。当C需要数据的时候,它就会通知M,我需要数据;当它需要UI展示和更新的时候,就会告诉V,你的帮我生成一个V来展示数据M,其实就是M和V的保姆。
MVC通信法则
C -> M
可以直接单项通信,C需要将M展现给用户,就需要知道M的一切,所有C是可以持有M的,这样M的说有方法和属性C都可以使用
C -> V
可直接单向通信。C通过V来布局展示用户界面
M -> V
永远不要直接通信。M是独立于UI的,并不需要和V直接通信,V通过C获取M数据。
V -> C
V 不能对C知道的太多,因此要通过间接的方式通信。
MVC 之间的通信方式
- Target action ,首先 C会给自己设置一个target,再把配套的action交给V。当作VC之间的通信方式,当V接收到某些变化时,V就会发送action给target从而达到通知的目的。这里V只需要发送action,并不需要知道C的处理方式
- Notification && KVO ,其实都是观察者设计模式。M信息改变时,会广播消息给感兴趣的人,只要C接收到了这个广播的时候,就会主动联系Model,获取新的数据提供给V
MVC模式的优点
- 低耦合性
- 有利于开发分工
- 有利于组件重用
- 可维护性