- 浏览: 32818 次
最新评论
在我们的Flex项目开发中,Service通常是不可缺少的一部分(我们通常将数据交互相关的逻辑封装成Service层,比如您基于Flex做了一个CMS管理平台,那么和后台数据相关的操作(查询,增加,删除,修改),可以封装为Service,也可以进一步封装为Delegate+Service),至于具体通讯方式,可以是HTTP Service,Web Service,或Remote Object,您可以根据需求自己选择,这个并不影响我们对Sercice的定义。
然后就出现了一个问题,我们在开发的初始阶段,由于后台Server尚未准备好,我们需要在Flex端产生一些虚拟数据,来帮助我们的模块完成开发和测试,这就相当于我们临时使用了一个虚构的服务器,来代替真实的后端Server,这就是mock service的概念。
要完成这个功能,我们建议使用Delegate+Service的模式,将您的应用逻辑与Service解除耦合,这样方便我们临时注入一个mock service,而不影响您其它模块的代码。
至于mock service的具体编写方式,跟您对Delegate的封装方式有关。由于对Service的调用,都是异步调用,所以我们建议您用AsyncToken封装对Service的调用,同时将代理封装为一个接口实现。看一个抽象的例子:
IDelegate
public interface IDelegate { function login(user:User):AsyncToken; }
LoginDelegate.as
public class LoginDelegate implements IDelegate { public function login(user:User):AsyncToken { return service.login(user); } }
这里假设我们的Service是一个RemoteObject对象,通过IoC方式注入到了代理中。那么在项目初期,我们可以使用一个虚构的代理,来返回一些虚拟数据(在我们的逻辑代码中要使用接口的方式使用代理,而不是具体的代理实现类)。比如:
MockDelegate
public class MockDelegate implements IDelegate { public function login(user:User):AsyncToken { CursorManager.setBusyCursor(); logger.info("test delegate login调用:{0},{1}",user.userName,user.password); currentToken = new AsyncToken(); var returnData:ReturnData = new ReturnData(); if(user.userName == "jim" && user.password == "jim") { returnData.status = 1; returnData.info = "登录成功"; returnData.data = user; } else { returnData.status = 0; returnData.info = "用户名或密码错误"; } var evt:ResultEvent = new ResultEvent(ResultEvent.RESULT,false,true,returnData,currentToken); setTimeout(dataBack,1000,currentToken, evt); return currentToken; } private function dataBack(token:AsyncToken, result:ResultEvent):void { mx_internal:token.applyResult(result); CursorManager.removeBusyCursor(); } }
由于使用了代理,和接口的机制,那么基本上将具体Service的实现和我们其它部分的逻辑代码做了隔离,当后端Server准备好,我们只需要切换回真实的数据即可,而无需对其它部分的逻辑代码做改动。
转载:http://www.riadev.com/flex-thread-543-1-1.html
发表评论
-
async-threading 让flex支持多线程(转)
2014-07-17 16:57 782开源项目async-threading能使as3支持多线程, ... -
Flex 多图片压缩上传
2014-07-10 15:04 854转自:http://my.oschina.net/eats ... -
Flex AMF Upload Demo
2013-05-05 20:44 929java端:写一个名为ZhuaTuSerlvet的Serl ... -
FXG Test
2012-12-17 23:52 685<?xml version="1.0&q ... -
My Flex Skin
2012-11-23 08:58 87My Flex Skin -
Flex中的DataGrid的内容处理(总结)
2012-11-08 10:59 7971.介绍一下DataGrid中数据的增加/删除/获取。添加/删 ... -
flex DataGrid 表头分组
2012-11-05 08:46 980<mx:AdvancedDataGrid id ... -
AS3分享:FLEX开发者必备的十多个工具
2012-11-01 00:07 654http://as3.aa-a.net/index.php/a ... -
AS3研究TextField心得
2012-10-31 23:41 1617AS3研究TextField心得这两天自己做了texti ... -
Flex efflex 开源库
2012-10-31 00:00 645http://www.efflex.org/FlexEffec ... -
Flex 字体 消除锯齿相关
2012-10-30 23:34 15381. Adobe 官方: 控制 ... -
Flex实用工具
2012-10-26 08:43 57Flex实用工具 -
Flex使用module加载swf,部分组件样式丢失
2012-10-24 15:44 773flex使用module加载swf,部分组件样式丢失(da ... -
My calendar
2012-10-22 14:21 630My calendar design -
使用ObjectUtil来遍历flex as Object对象的所有属性
2012-10-12 10:48 733遍历或者复制一个as 对象所有的属性,可以模仿java使用反射 ... -
AS3 Copy 对象
2012-10-12 10:46 736第一种:public static function clon ... -
AS3 深复制
2012-10-12 10:44 76313.11 深度拷贝一个ArrayCo ... -
flex mvc 架构图
2012-09-25 15:12 713flex mvc 架构图 -
Parsley API
2012-08-16 08:40 794Parsley API -
如何从数组中随机取出多个不重复的项
2012-08-14 17:24 9691.问题如何随机取数组 ...
相关推荐
10. 测试驱动开发(TDD):Cairngorm鼓励使用测试驱动开发,提供了测试支持,包括模拟对象(Mock Objects)和断言(Assertions),以确保代码的质量和可靠性。 总的来说,Cairngorm开发文档中文版是学习和理解这一...
一款基于机器学习的Web日志统计分析与异常检测命令行工具_hy4
基于RBAC权限控制的资产管理系统_hy5
318 Series Hardened Access Points 370 Series Outdoor Access Points 310 Series Campus Access Points IAP-315 IAP-314
最强PMP备考计划、知识整理、试题,并以本系统来展示_hy5
【官方】计算机职业英语一级考试样卷.pdf 【官方】全国机等级考试二级笔试样卷:存取(Access)数据库程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C++语言程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:德尔菲(Delphi)语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:Java语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视觉基础语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视讯FoxPro数据库程序设计.pdf 【官方】全国计算机等级考试三级笔试样卷:PC技术,pdf 【官方】全国计算机等级考试三级笔试样卷:网络技术.pdf 【官方】全国计算机等级考试三级笔试样卷:信息管理技术,pdf 【官方】全国计算机等级考试四级笔试样卷:软件测试工程师.pdf 【官方】全国计算机等级考试四级笔试样卷:数据库工程师,pdf 【官方】全国计算机等级考试四级笔试样卷:数据库技术,pdf 【官方】全国计算机等级考试四级笔试样卷:网络工程师.pdf
SpringBoot网上商城#java#毕业设计#网上商城#springboot#课程设计#编程#thymeleaf_hy4
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
360 Series Outdoor Access Points 303 Series Campus Access Points 303H Series Hospitality Access Points 300 Series Campus Access Points
肽质量指纹图谱提取区域检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
分布式事务实战_hy4
python网络爬虫按月爬cctv新闻30分的视频_hy4
【golang】企业微信群机器人接口Golang封装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
mumu-activemq是一个对老牌mq消息中间件的学习和测试项目,本人通过这个项目来熟悉activemq的消息发送流_hy4
【Python+HTML】基于flask的rbac学生权限管理系统,redis存储session_pgj
一步一步学springboot2:微服务项目实战(第二版)_hy5
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
新建 DOC 文档.doc