`

客户端MVC

    博客分类:
  • Flex
阅读更多

大多数开发者(尤其是Web应用开发者)已经非常熟悉人机交互系统开发中关于MVC(模型/视图/控制器)的概念,那么用Flex开发企业应用时,MVC模型是否依然适用呢?在Flex中该如何实现MVC呢?接下来我们就一起探讨一下这些问题。

很显然,在Flex开发中,MXML文件天生就是视图,客户端所保持的状态是模型。然而,什么是控制器呢?

在回答这个问题之前,我们首先回顾一下MVC中控制器的作用:“在MVC模型中,

控制器控制模型状态变化的传播,确保用户界面与模型之间的对应联系,保证界面能够反映正确的模型状态,控制器接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。将模型、视图、控制器进行分离,使设计和使用都具有很大灵活性。但是,在现实中,视图和控制器的功能通常是紧密地联系在一起的。控制视图工作的输入事件通常都是与视图的构成相关的。在现实界面设计环境中,界面操作事件及其处理都是与界面形式设计紧密关联的。在这种情况下,把视图和控制器分离开,就给分析和设计带来了不便,而且运行的效率低。”

根据上面对“控制器”职责的论述,我们认为,Flex中的控制器应该与视图结合在一起,也就是说属于控制器的代码应当写在MXML文件中。为此,我们形成了比较朴素的客户端MVC开发思路:

开发人机界面时,写一个MXML文件和一个AS类文件,二者名称相同但是扩展名不同。MXML文件作为视图和视图控制器(视图跳转和弹出子视图的代码放在MXML文件中),AS类文件作为模型。模型上定义视图所需要的数据,以及数据的处理逻辑(比如获取远程数据,对数据进行排序和过滤等)。在MXML视图上建立对模型的单向引用,然后视图上的控件通过绑定模型上的数据来实现展示模型数据的目的。而模型无需知道视图,于是当“视图”界面上的数据展示和操作控件发生变化时,不会影响到模型部分。当用户操作界面发生请求需要处理数据时,MXML上的响应控件事件的处理函数(属于控制器的代码)调用模型上的方法来改变数据,改变后的数据通过绑定机制(属于控制器的功能,由Flex框架提供)自动地刷新MXML视图。

这样做的最大好处就是简单易行,易于培训。除此之外,将视图和模型分离,当视图上的控件发生变化时不会影响模型上的数据处理。这种思路已经在我们的项目中多次实践,取得了很好的效果,下面就举一个项目中的实际例子来帮助读者更好地理解这种开发思路。

 

分享到:
评论

相关推荐

    论文研究-基于Ajax的客户端MVC模型 .pdf

    基于Ajax的客户端MVC模型,黄史,,随着Ajax的盛行,Web客户端的代码也日益复杂。本文首先分析Ajax与MVC三层模型各自的优势,然后提出在Ajax的客户端采用MVC三层模型来优化

    基于SpringMVC开发MapXtreme瘦客户端例子

    这是一个基于MapXtreme开发的瘦客户端GIS例子程序。说明如何在Spring框架下编写MVC瘦客户端电子地图应用程序。因为文件本身太大,将lib目录下的库文件删除了。

    SignalR服务端与客户端的消息传递

    SignalR服务端与客户端的消息传递 web建立服务端(SignalR.1.0.1) winform制作的客服端(SignalR.Client.1.1.2),版本是net 4.0 的,还在用net 4.0 以下的朋友就不用下载了,SignalR 是建立在 net4.0 级以上

    MVC设计模式在客户端的应用.pdf

    MVC设计模式在客户端的应用

    Asp.Net MVC之客户端校验

    Asp.Net MVC之客户端校验,老师上课完整操作实例!

    cloak:客户端 JavaScript MVC 框架

    Cloak.js 是一个客户端 MVC Web 应用程序框架。 受到极大启发,Cloak.js 有许多相似的特性,对于熟悉 Backbone.js 的人来说应该很容易学习。 Cloak.js 是围绕 CommonJS 模块 API 设计的。 var View = require ( '...

    rong framework 1.0

    MVC集成(ControllerEngine) MVC三层模型快速入门 控制器 去除magic_quotes 路由 数据库介绍 Rong_Db类连接使用mysql数据库 Rong_Db连接到sqlite 数据库模型 分页 加密 SwapBit换位 PHP模板类 Wudimei...

    asp.net mvc 客户端验证

    用于mvc框架中验证用户的输入,本例使用mvc2做的

    车辆API

    产品特点REST API探索主要的HTTP动词和功能Hateoas 使用ControllerAdvice自定义API错误处理Swagger API文档HTTP Web客户端MVC测试自动模型映射使用说明待办事项实施TODOs的内CarService.java和CarController.java...

    WebApi跨域访问 ASP.NET MVC4客户端 html客户端

    WebApi跨域访问 ASP.NET MVC4客户端 html客户端;

    Unity3D客户端PureMVC框架视屏讲解

    基于Unity3D讲解PureMVC框架,通过游戏制作讲解,适合学习框架的人

    用asp.net MVC 中的方法 添加客户端菜单

    Adding Custom Menu in Html Helper class using Extension Method in ASP.Net MVC

    PureMVC客户端代码

    PureMVC框架实用案例,利用pureMVC框架搭建的一个基本功能框架,可以在此基础上加以完善功能.服务器端采用java开发的基于CXF框架的webservice,

    Master-Client-MVC-with-React-3378-_2

    该课程详细介绍了SPA架构,并详细介绍了客户端MVC设计中的不同角色。 该课程逐步介绍了使用React.js设计和构建与SPA兼容的全功能Web模块的方法,并涵盖了基础和高级功能。 如今,React技术在复杂和高级的前端开发中...

    J2ME客户端的MVC结构设计介绍

    MVC(Model-View-Controller 模型-视图-控制器)是用户界面设计中最经典的 一种设计模式。MVC 模式提供了一种方法,将应用程序(或者应用程序的一部分)分解成三个部分:①模型,它是应用程序的主要部分,包括商业逻辑...

    pureMVC 实例

    一个以pureMVC为flex前端框架,blazeds为通信服务器,spring和hibernate为服务端框架,实现了增删改等功能的完整实例,数据库使用mysql,部分关键地方加了注释,enjoy!

    java服务器交互框架

    3.客户端mvc增加配置 // 这是接口存放的包..所有的接口都放此包下面 <property name="basePackage" value="com.eat.conInter"></property> // 这里是配置服务端的地址.多个地址以次写下去......

    FLEX企业应用开发实战.part1

     2.3 客户端MVC  2.4 数据绑定  2.4.1 实现数据绑定的方法  2.4.2 数据绑定发生的时机  2.4.3 可以用于数据绑定的属性  2.4.4 数据绑定的用途  2.4.5 使用Bindable元数据标记  2.4.6 绑定到函数、...

    FLEX企业应用开发实战.part2

     2.3 客户端MVC  2.4 数据绑定  2.4.1 实现数据绑定的方法  2.4.2 数据绑定发生的时机  2.4.3 可以用于数据绑定的属性  2.4.4 数据绑定的用途  2.4.5 使用Bindable元数据标记  2.4.6 绑定到函数、...

Global site tag (gtag.js) - Google Analytics