浅尝iPhone中的MVC框架设计模式
2011-04-22 09:26 zhoujie 博客园
我要评论(0) 字号:
T |
T
MVC模式大家并不陌生,用的比较多的是ASP.NET MVC模式。今天我们要简单谈一下iPhone下的MVC设计模式。
AD:
整理自斯坦福大学iphone开发公开课,并加入了一些自己的理解。
一、概念
Model = 你的应用程序是什么,是用户界面无关的部分
Controller = 你的应用程序如何将Model显示给用户(UI逻辑),是中心是桥梁,连通Model和View
View = Controller的奴才(minion)、小跟班。view一切听从Controller的指挥,并及时将重要事件报告给Controller
二、通信
1、Model和View永远不能相互通信,只能通过Controller传递。
2、Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。
3、Controller可以直接与View对话(通过outlet,直接操作View,outlet直接对应到View中的控件),View通过action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是Controller从Model中取得并经过加工了)。Controller是View的代理(delegate),以同步View与Controller,delegate是一组协议,表示程序将要或者已经处于某种状态时,来调整View,以对用户有个交代。例如系统内存不足了,你是不是相应的降低view的质量以节省内存。
注:突然冒出个delegate,让人不好理解,其实他不对应xcode为我们创建的XXAppDelegate文件,此文件不属于MVC中的任何一部分,虽然与MVC有联系。我发现苹果文档里说A是B的代理的时候,通常是指A中有B的引用,可以A直接操作B。
三、实作
建立一个BtnClick工程系统,会为我们生成以下文件:
BtnClickAppDelegate.h
BtnClickAppDelegate.m
以上两个文件定义了实现UIApplicationDelegate协议的类BtnClicAppDelegate,UIApplicationDelegate协议是系统预定义的协议,负责监视应用程序的高层行为,处理几个关键系统消息,是应用程序生命周期为我们预留的Hook,每个iphone应用程序必不可少的。iphone应用程序的生命周期:
BtnClickViewController.h
BtnClickViewController.m
实现了MVC中的Controller.可以定义一些IBOutlet元素和IBAction方法与View通信。
- @interface BtnClickViewController : UIViewController{
- IBOutlet UILabel* statusText;
- }
- @property (retain,nonatomic) UILabel *statusText;
- - (IBAction)buttonPressed:(id)sender;
- @end
View对应那个文件呢? 答案是Resource下的MainWindow.xib和BtnClickViewController.xib。MainWindow.xib文件在在应用程序加载时是会被自动加载的,这其实是在plist文件中配置的。然后MainWindow.xib会加载子视图BtnClickViewController.xib。
为什么会命名为ViewController,而不是分开命名?可能是因为View和Controller关系太紧密了,view就是Controller的跟班。实际编程时一定要分清MVC各部分的职责。
自始至终没见到Model的面,其实M是可选的,特别是对于简单的应用。任何与界面无关的,我们添加的自定义类来定义我们应用程序的对象,都属于Model的范畴。
至于为什么这么麻烦地分成三块,而不是两块,或者干脆一砣?只能在我们编程过程中慢慢体会了。
转载自别处!!!
分享到:
相关推荐
MVC全名是Model View Controller,是模型...而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Linux的聊天工具 java做安MVC结构做的,服务器,源码 (Linux, java chat An MVC structure to do so, the server, source)
java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值java三层结构开发,很好的利用了MVC结构...
struts2+spring+ibatis(ssi),标准的MVC结构,使用的myeclipse+MySQL(数据库字段3个)很简单,因此没有必要附上数据库资源了。感兴趣的童鞋可以看看。
java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值java三层结构开发,很好的利用了MVC结构,尤其是对持久层的理解运用很有帮助与参考价值java三层结构开发,很好的利用了MVC结构...
用java jsp语言 实现网上书店的功能 购物车购买书籍 还有就是Filter
最基础的Mvc结构 有助你理解MVC模型工作原理
Mvc结构下js
springBoot MVC结构+mysql 参照了部分的官文档,修改配置文件可运行.可以参照博客内容研究,适合自学spring boot,
基于MVC结构的合同管理,对学习c#会有帮助
Mysql数据库,MVC结构,DAO与service层的结合,非常适合初学jsp MVC三层结构的使用者。可整合到大多项目中。
程序上采用MVC结构,可以将数据存取逻辑与数据表现逻辑分开,组合JSP Servlet和JavaBean来建造灵活与可维护的应用程序的设计模式。 Web界面的要求是允许用户浏览相关数据库中的内容.该界面使用户可以通过指定一个...
用MVC结构+ORACLE 做得 比较简单 初学者可以看看
ASP.NET3.5 CodematicDemo MVC 结构清晰的源码
Javaweb课程设计/期末大作业,MVC结构软件测试管理系统+实验报告 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心...
Spring3 MVC结构核心流程全解 全部jar包都是自己一个个找出来的 使用Spring MVC,配置DispatcherServlet
JSP博客管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 mvc结构,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 此次系统主要在JSP的基础上,结合Servlet技术并以...
这格里面介绍了struts 的MVC结构,里面的内容非常详细