【iOS开发】MVC设计模式
来源:互联网 发布:tcp 服务端源码 编辑:程序博客网 时间:2024/05/16 16:12
听说现在开始流行MVVM设计模式,听上去好像有点新奇,暂时还是习惯MVC设计模式,接下来主讲MVC模式.
说到iOS中的MVC还是从2011秋季斯坦福课程的老头的iphone公开课讲起,这个教授讲的概念很准确并且最为浅显易懂的.
Model-View-Controller
MVC设计模式认为有三种类型的对象:对象模型,视图对象和控制器对象。
这个设计模式,就是用控制器controller将model和view进行分离,让view和model之间没有任何瓜葛,相互不知道对方的存在.
举个例子吧,大家好理解点.就像一个班级里面两个打了架的同学,如果有一个卫生大扫除活动,那么就需要一个第三者"班主任"来沟通协调,要不然谁还去干活.这个第三者就是控制器,这个第三者可以让他俩干啥就干啥.
上面理论讲了一大堆,还是上图直观(摘自斯坦福公开课的课件):
(1) 控制器与视图之间的交互大部分通过连线的Xcode的连线就可以,例如outlet,例如代理,有了这些,他们之间的沟通就畅通无阻了.
<1> 用户在view上面的一些交互动作(如:单击,双击,拖拽等)可以直接让控制器去响应;
<2> view需要的数据源可以通过控制器来提供;
<3> view上面的一些代理事件也可以指派给控制器,让控制器去完成.
这样有点坏处就是,控制器会很忙,要处理很多事件,非常被动.具体什么优化控制器里面的代码,等之后的文章中会有一篇专门讲"Controller代码瘦身",通过封装,让控制器的代码量不适于那么臃肿.........
(2) 控制器还需要一个很重要的角色:Model
model,顾名知义,模型.我们通过模型来提供数据,最终才能有数据展现在用户的眼前.
有了模型,控制器想什么时候用数据,想什么用都可以. 有了模型,控制器可以相当的任性.....
模型和控制器之间的联系可以通过通知(Notification)和观察者模式(KVO).模型没必要知道控制器的存在,只需要提供数据就可以了,这样可以减少耦合性,提高代码的复用性.
model模型数据已经更新了,可以通过广播的方式将数据更新信息发出去.model的观点:谁关心我的更改让谁收听去,我对谁收听了我不感兴趣。
(3)Notification与KVO场景使用留着下一次具体上代码解说.
总结一点:model和view不能直接交互,要通过控制器这个第三者来管理.这样可以减少耦合性.
- iOS开发设计模式-MVC
- 【iOS开发】MVC设计模式
- iOS开发中的设计模式----MVC模式
- iOS 设计模式MVC
- iOS设计模式---MVC
- ios mvc设计模式
- iOS MVC设计模式
- iOS MVC设计模式
- iOS MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- iOS开发之理解iOS中的MVC设计模式
- freemarker实现页面的静态化
- 机器学习笔记(三)矩阵和线性代数
- GitHub上README.md教程
- Core Animation - 图层几何学<二>
- win7 与xp 系统 DateTime.Now
- 【iOS开发】MVC设计模式
- Could not find .egg-info directory in install record for *
- JavaEE_Junit_Junit对Spring注入的Service层的测试
- sqlplus中其他命令的使用timing,store,host。。
- jQuery对象相互转换成DOM对象
- 值得关注的技术类微信公众号
- 领域专用语言(DSL)
- 设置图片渐变效果,遮罩层、半透明
- PAT (Advanced Level) Practise 1033 To Fill or Not to Fill (25)