浅尝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的范畴。
至于为什么这么麻烦地分成三块,而不是两块,或者干脆一砣?只能在我们编程过程中慢慢体会了。
转载自别处!!!
分享到:
相关推荐
- **丰富的库支持**:Java拥有大量的开源库,如Spring框架,可以帮助快速搭建MVC结构,简化网络通信、数据库操作等任务。 - **强大的社区支持**:Java有着庞大的开发者社区,遇到问题时可以找到丰富的资源和解决方案...
MVC全名是Model View Controller,是模型...而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
在这个项目中,"一个标准的MVC结构的SSI"指的是使用Struts2、Spring和iBatis(简称SSI)框架组合实现了一个完整的MVC应用。下面将详细阐述这三个框架及其在MVC中的作用。 1. **Struts2**:Struts2是一个基于MVC设计...
**MVC(Model-View-Controller)...学习“最基础的MVC结构”意味着你需要掌握以上概念,并通过实践编写控制器、视图和模型来加深理解。在C#的学习过程中,理解并运用MVC模式将有助于你构建高效、易于维护的Web应用。
"MVC结构在Ajax客户端开发中的应用研究" MVC 结构是软件开发中的一种常见的设计模式,它将应用程序分成三个部分:模型(Model)、视图(View)和控制器(Controller)。其中,模型负责存储和管理数据,视图负责显示...
《PureMVC结构pdf中文版》是对PureMVC框架的深度解析,主要针对Flex和ActionScript3开发者。这个文档提供了一套完整的理解、应用及优化PureMVC模式的方法。PureMVC是一个轻量级的、多层的架构框架,旨在简化开发过程...
【基于MVC结构的合同管理】是一个典型的软件开发项目,主要使用C#编程语言实现。在本文中,我们将深入探讨MVC(Model-View-Controller)设计模式在合同管理系统的应用,以及它如何与C#相结合,提升软件的可维护性和...
标题"MVC购物车用MVC结构+ORACLE做得比较简单 初学者可以看看"表明这是一个关于使用Model-View-Controller(MVC)架构和Oracle数据库开发的简单购物车应用的教程,适合初级学习者。描述中的"用MVC结构+ORACLE做得...
一、Spring3 MVC结构 1. **DispatcherServlet**:作为Spring MVC的前端控制器,它是所有HTTP请求的入口点。DispatcherServlet负责调度请求到相应的处理器,处理后返回响应。 2. **Controller**:控制器是业务逻辑...
SSH2 MVC结构框架是软件开发中的一个经典组合,由Spring、Struts2和Hibernate三个开源框架集成而成。这个框架主要用于构建高效、可维护且松耦合的企业级Web应用程序。下面将详细阐述这三个组件以及如何利用它们搭建...
本项目"基于mvc结构生成的javaweb网页设计"旨在提供一个基础的JavaWeb应用实例,涵盖了增删改查和登录等基本功能,适合初学者或希望深入理解MVC框架的开发者进行学习。 首先,我们来详细解析MVC架构。MVC是一种设计...
在选择MVC结构的实现方式时,需要权衡代码复杂性、可维护性、可扩展性等因素,根据项目需求和团队能力来确定最适合的实现策略。在J2ME这样的资源受限环境中,优化设计尤为重要,以确保应用程序的性能和用户体验。
总之,MVC模式为Web开发提供了一种结构化的组织方式,使得开发者能够更好地管理和维护代码,同时提高开发效率。结合Java Web技术,如Spring MVC和Struts2,可以构建出高效、可扩展的Web应用程序。而CRUD操作则是这些...
程序上采用MVC结构,可以将数据存取逻辑与数据表现逻辑分开,组合JSP Servlet和JavaBean来建造灵活与可维护的应用程序的设计模式。 Web界面的要求是允许用户浏览相关数据库中的内容.该界面使用户可以通过指定一个...
这格里面介绍了struts 的MVC结构,里面的内容非常详细
Java练习项目基于SSH框架的Java Web项目的标准MVC结构
Java项目基于SSH框架的Java Web项目的标准MVC结构的bookStore项目
第九章 上机练习题(1) 编写一个体现MVC结构的GU I程序。首先编写一个封装梯形类,然后再编写一个窗口。要求窗口使用三个文本框和 一个文本区为梯形中的数据提供视图,其中三个文本框来显示和更新梯形对象的上底、...
这种方式的好处在于,当项目结构发生变化时,URL能够自动调整,避免了硬编码路径带来的维护难题。 #### 引入JavaScript脚本 同样地,引入JS文件通常是在HTML文档的`<head>`或`<body>`部分的底部使用`<script>`标签...