MVC设计模式


斯坦福大学公开课

MVC含义:

视图(View):构建UI的类;例如:按钮,标签,进度条等。
模型(Model):视图类所需要的数据;例如:表格需要显示的文字。
控制器(Controller):连接视图类和模型类,任务是使数据显示在屏幕上。例如:控制器将表格需要使用的数据“填入”表格视图中,将表格视图显示出来。


一、访问

  • 控制器可以直接访问模型:将模型直接作为控制器的属性。
  • 控制器可以直接访问视图:将视图直接作为控制器的属性。
  • 模型与视图无法直接访问对方:二者完全解耦,不能引用对方,把对方设置为属性。

二、通信方式

视图到控制器的通信

  • 目标动作机制(target - action):用户与视图交互触发控制器的方法。例如:点击按钮后实现视界面跳转,网络请求,刷新UI等。

  • 委托机制(delegate):视图向控制器询问某些自己无法决定的事情,或是让控制器帮助自己做一些自己独立无法完成的事情。 因为控制器才是掌握全局的角色,很多时候视图是无法自己做决定的。例如:表格问控制器:我可以滚动么?然后控制器给予回答告知是否可以继续滚动。 如果表格的高度很小,那么就可以不让它滚动。但是如果表格的高度已经超过了屏幕的高度,这时候如果让它自作主张无法滚动久不好了。

  • 数据源机制(dataSource):视图让控制器给它将要显示的数据。例如:音乐的数据存在于模型里,控制器访问模型,从模型里拿到数据后告诉视图如何显示出歌曲。

模型到控制器的通信

  • 通知机制(Notification):控制器注册监听某模型数据变化的广播频道,当此模型数据变化后向该控制器发送广播,告知模型变化情况。
  • KVO机制(Key-Value Observing):模型作为控制器的属性,当模型属性被修改后,持有此模型属性的控制器就会收到通知。

三、通信方式图解

mvc.png

文/Hero_SJ(简书作者)原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容