Flex 中函数队列的实现 很好用在TOP应用大赛中学得的FUNCTION QUEUE
2009-12-08 12:55
399 查看
在做TOP大赛的时候,我遇到过这样的问题。对于N个商品他们处理的方式不尽然相同(有M种处理方式)。
首先,我使用了很暴力的一个个函数写(switch语句),写完后发现代码太长太繁琐。当我要修改函数是,甚至发现找不到这个函数了。
于是我将这些函数写成了一个类,但是发现还是过长,最后想到了函数队列。
通过函数队列可以将,函数通过队列管理,也可以保持代码的高度重用性和简洁性。
1.设置 FunctionsArray 在Flex 中 Array实际带有queue的性质。
通过Array.push可以达到进队的效果。
2.设置orderArray 保存执行函数执行顺序。
如 : orderArray = [0,1,2];
意思就是执行的顺序为 functionsArray[0],functionsArray[1],functionsArray[2],
3.执行functionsArray。
当要改变执行顺序时,只需要改变orderArray的顺序。
当然通过调整functions数组也是可以达到目的的不过比较繁琐。
下面是自己写的Flex代码:
首先,我使用了很暴力的一个个函数写(switch语句),写完后发现代码太长太繁琐。当我要修改函数是,甚至发现找不到这个函数了。
于是我将这些函数写成了一个类,但是发现还是过长,最后想到了函数队列。
通过函数队列可以将,函数通过队列管理,也可以保持代码的高度重用性和简洁性。
1.设置 FunctionsArray 在Flex 中 Array实际带有queue的性质。
通过Array.push可以达到进队的效果。
2.设置orderArray 保存执行函数执行顺序。
如 : orderArray = [0,1,2];
意思就是执行的顺序为 functionsArray[0],functionsArray[1],functionsArray[2],
3.执行functionsArray。
当要改变执行顺序时,只需要改变orderArray的顺序。
当然通过调整functions数组也是可以达到目的的不过比较繁琐。
下面是自己写的Flex代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init();" layout="absolute"> <mx:Script> <!--[CDATA[ import mx.collections.ArrayCollection; // function queue private var funcArr:Array = new Array(); //标记操顺序的队列 private var orderArr:Array = [0,1,2]; //执行前的字符串数组 private var previous:Array = new Array('Nokia N81','Nokia N82','Nokia N85'); //执行后的字符串数组 private var next:Array = new Array(); private var arrc:ArrayCollection ; private function init():void { initFuncArray(); //执行函数队列 // swapFunction(0,2); var i:int ; for( i = 0 ; i < previous.length ; i++) { next.push( funcArr[ orderArr[i] ](previous[i]) ); } list1.dataProvider = previous; list2.dataProvider = next; } private function initFuncArray():void { funcArr.push(aFunction); funcArr.push(bFunction); funcArr.push(cFunction); } private function aFunction(str:String):String { return str + " costs :" + "$100" + "(FunctionA)"; } private function bFunction(str:String):String { return str + " costs :" + "$200" + "(FunctionB)"; } private function cFunction(str:String):String { return str + " costs :" + "$300" + "(FunctionC)"; } private function swapFunction(swapIndex:int , swaptoIndex:int):void { var temp:Function = new Function(); temp = funcArr[swaptoIndex]; funcArr[swaptoIndex] = funcArr[swapIndex] ; funcArr[swapIndex] = temp; } private function setArray(arr:Array):void { } ]]--> </mx:Script> <mx:List x="152" y="31" width="73" id="list1" height="140"></mx:List> <mx:Label x="242" y="68" text="函数执行后→" width="92" fontSize="12"/> <mx:List x="325" y="31" height="140" width="223" id="list2"></mx:List> </mx:Application>
相关文章推荐
- Flex 中函数队列的实现 很好用在TOP应用大赛中学得的FUNCTION QUEUE
- PHP实现队列(Queue)数据结构
- cpp: 使用类模板以及链表实现队列Queue
- 爬虫代码实现六-Queue队列实现循环抓取
- 队列简要实现,是queue,不是dequeue
- ZooKeeper实现分布式队列Queue
- 用c++11的bind,function,boost::condition_variable实现的一个线程安全的任务队列
- 生产者与消费者的快速实现——并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 函数的调用机制_用递归实现栈(Function call machenism_Recursive calls stimulate stack)
- jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数
- nodejs一个函数实现消息队列中间件
- Implement Queue using Stacks(用栈实现队列)
- Java多线程与并发应用-(10)-java阻塞队列实现ArrayBlockingQueue
- Queue队列 链式存储实现
- Jquery源码解析---利用队列来实现函数的顺序执行
- C++ 队列(queue)堆栈(stack)实现基础
- 题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能
- 队列Queue的实现
- Java实现栈Stack和队列Queue
- 【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)