• 167.62 KB
  • 2022-06-17 14:58:28 发布

actionscript中aop的编织实现new

  • 3页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
万方数据ISSN1009-3044ComputerKnowledgeandTechnology电奠知识与技术V01.6,No.26,September2010,PP.7400-7401,7403E—mail:kfyj@cccc.net.cnhttp://www.dnzs.net.cnTel:+86--551--56909635690964ActionScript中AOP的编织实现吴险峰(四川管理职业学院,四川成都610004)摘要:AOP方法是对OOP的补充和完善,但Actionscrlpt还没有一个比较成熟的AOP框架,该文探讨了一种编织方法,在Action-script中贯彻AOP思想,并以一个典型的Flash演示程序来对这种方法的实现予以说明。关键词:ActionScript;AOP;编织实现中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)26-7400-02WeavingImplementationofAOPinActionScriptW‘rLJ)‰一feng(SichuanManagementProfessionalImtitute,Chengdu,610004,Chim)Abstract:AOPcanbegoodadditiontOOOP,butthereisnomatureframeworkofAOPinActionscript,ThispaperdiscussesawayofweavingimplementationofAOPinActionScript,andexplainthemethodthroughatypicalflashdemo.Keywords:ActionScript;AOP;weavingrealizeActionScript是针对AdobeFlashPlayer运行时环境的编程语言,它在Flash内容和应用程序中实现了交互性、数据处理以及其它许多功能。正是由于ActionScript的强大支持。以及其独特的跨平台特性、灵活的界面控制以及独具的多媒体特性,使得用Flash制作的应用程序具有很强的生命力。在与用户的交流方面具有其它任何方式都无可比拟的优势。但随着应用的复杂程度提高,逐渐显现出一些缺陷,比如,Flash应用大都有较多的表现元素,它们与业务逻辑结合程度紧密,导致业务层与表现层混杂、代码可重用性低。面向方面程序设计技术(AspectOrientedProgramming)可以在很大程度上解决这样一些问题,但由于ActionScript在处理接121和动态代理同有的机制问题.使其在实现AOP方面有比较大的困难,至今没有一个能够得到业界广泛认可的支持AOP的框架出现。本文的H的就是提出一种静态编制的方法,使我们在开发Flash应用的时候,能够应用AOP思想,优化算法。1ActionScript中逻辑层与表现层的结合模式在Flash应用中,逻辑层与表现层一般的呈现出如图1所示的模型,在这个模型中,各种业务逻辑存在于逻辑层,逻辑层的各种状态由表现层在舞台场景中进行可视化表现。在这种模式下.我们通常首先将业务逻辑表达出来。然后确定其中与可视化相关的处理.然后将这些处理在适当的舞台场景中表现出来。下例是一个经典的汉诺塔演示程序。程序中通过递归调用moveDisk0来完成碟片的移动过程。而在函数中。嵌入了一些可视化处理在舞台上展示移动过程的过程图1Hash逻辑层与表现层functionmoveDisk(peg_s:int,peg_d:int,peg._t:in4count:int):void{if(count==1){{//以下为可视化部分,,根据pegs和peg_d的值生成移动盘的路径//确定弹出pegs上的碟片的碟片,/将碟片按上一步生成的路径移动,,将碟片压入peg_d;return;l}moveDisk(peg_s,peg_t,count-1);moveDisk(pegs,peg._d,1);movcDisk(peg_.t,peg-d,count一1);l由于在Flash中有丰富的图形和动画支持。在演示、动画、游戏等应用时这种模式非常常见,体现了与用户的交流方面具有无可比拟的优势。但我们也可以看到,这种模式存在两个明显的问题:1)逻辑层和表现层高度黏合,由于逻辑层和表现层的代码往往是交织在一起的,所以容易出现混乱状态。如果要对逻辑进行调收稿日期:2010—07—22作者简介:吴险峰,男。讲师,研究方向为缡程技术及数据库。7400··计算机工曩应用技术·-·-·本栏目贲任编辑:粱书 万方数据第6卷第26期(2010年9月)ComputerKnowl姆andTechnology电脑知识与技术整时.必须相应的调整表现部分,反之亦然。21完整的逻辑被切断,由于Flash开发的特有的代码组织方式,逻辑层的代码往往被分配到不同的时间帧中,因此形成支离的代码,这给代码的维护带来很大的障碍,难以重用。鉴于此,我们借鉴AOP思想,试图将逻辑层与表现层剥离。使得应用具有更为完整的逻辑和清晰的功能分层次。2面向方面设计的引入面向方面编程(AOP,AspectOrientedProgramming)通过了横切、通知技术等技术。在不影响原模块的独立完整的情况下,将一段程序切入到模块中,这样,无论是附加的程序还是原来的模块,都保持了相对独立。甚至从原模块的角度看,和没有被横切的状况下完全一样。AOP中的方面(Aspect)主要由连接点(JojnPoint)、切入点(Pointcut)、通知(Ad.vice)等概念构成,本文在此不过多的讨论这些概念,简单的说,从系统分析的角度,主要有两个相关的任务:1)分析系统的核心逻辑,以及在核心逻辑上的横切关注点.2)将横切关注点集结,运用AOP技术,形成方面,然后,核心逻辑仍旧采用OOP的方法来实现,横切关注点则运用AOP方法来实现。如上例,我们需要将汉诺塔盘片移动过的过程可视化,其关注点显然是需要对moveDisk0加以关注。按照AOP的规则。形成类似Actiomcript语法的方面定义:图2AOP中表现层对逻辑层的横切publicAspectmoveDisk{pc_moveDisk(moveDisk):peintcut;beforepc—moveDisk,args:Array):AdviceBefore{,,可视化代码}afterpc—moveDisk,args:Array):AdviceAfterl,,可视化代码ll3编织处理的设计由于Actionscript并不支持以上有关Aspect的代码.我们设计通过编织处理然后把Aspect代码转换成与原代码混合的编织代码,这个过程通过词法分析工具和语法分析来完成,其基本的原理对Aspect代码文件进行词法和语法分析。并将分析结果储存在关键词表和符号表中,然后根据编织规则,把Aspect代码转换成与原代码混合的编织代码,然后可以通过Flash或air编译成最终的代码。主要的工作包括:1)扫描pointcut时,生成一个自定义的事件类,命名以_asp_为前缀,加上所切人的函数名,在本例中该类为_aop_jnoveDisk,它的主要属性和方法如下:形成一个自定义事件类:publicclassAspEvent—moveDiskextendsEventfpublicstaticconstBEFOR_MOVEDISK:String=”before_moveDisk’。;publicstaticconstAY["ER_MOVEDISK:String=”after_moveDisk’’:publicvat_args:Array;,/用于存放切入函数的参数publicfunctionasp_event_moveDisk(type:String,args:Array,bubbles:Boolean:false,cancelable:Boolean;fal∞){super(type,bubbles,cancelable);~mgs=args;}l2)根据Aspect中的Advice种类定义切入函数。按Advice中存在的操作种类分别定义,比如After定义为。function_pc_after_moveDisk(args:Array){var_aspEvenkmoveDisk:AspEventmoveDisk--newA@Event_moveDisk(moveEvent.AFYER_MOVE_DISK,args);dispatchEvent(_aspEvent_moveDisk);l3)根据Aspect中相关操作的定义,定义各类Advice的具体执行函数。function_ad_after_moveDisk(e、,t:moveEven0{,,可视化代码}4)将切入函数的调用添加到所切入的函数中,形成横切点,切人点前响应(before)添加插入到该函数的第一行,切入点后响应(after)i添加到甬数return语句前,本例中,需在return前插入_pc_after_move(args:Array)。被横切的函数的相关参数,可以通过args向Advice操作中传递。经过以上编织处理后,Aspect代码被融入了aetionscript代码中,可以顺利运行。这样的代码结构体现出以下的优势:(下转第7403页)本栏目责任编辑:粱书-一···计算机工程应用技术·-7401 万方数据第6卷第26期(2010年9月)ComputerKnowledgeandTechnology电脑知识与技术在企业管理中的广泛使用,其本身也得到了较好的发展。OLAP技术现已经在医疗保险、金融、制造业,商业零售、电信,公用事业等领域中得到了广泛的使用。而这种技术在目前的发展趋势主要是:①OLAP技术与和数据挖掘技术的结合。同时成为书库分析的工具。OLAP是分析型的,DM是验证犁的,他们的组合为联机分析挖掘(0一LAM)技术提供的技术支持,其灵活性和操作性较实际;②oily技术与Web技术结合,扩宽OLAP的使用范围,成为0LAP发展的一个新方向。4结束语通过数据仓库技术。企业可以获得有效的信息,提高决策的正确度,给现代企业带来较好的经济效益.但是,数据仓库在发展的过程中,同样遇到了各种技术问题。文章主要介绍了数据仓库及OLAP技术的概念和其关键技术。把OLAP技术运用于数据仓库.有利于企业用户从多方面获得有效的数据信息。以提供决策支持。参考文献:【1】王能斌.数据库系统教程【M1.北京:电子工业出版社,2002.【2】萨师煊,王珊.数据库系统概论【M】.4版.北京:高等教育出版社,2006.【3】张敏,徐震,冯登国.数据库安全fM】.北京:科学出版社,2005.【41牛少彰.信息安全概论fMl.北京:北京邮电大学出版社,2004.【5】MendelzonA0,VaismanAA.TemporalqueriesinOLAP,Proceed—ingsofthe26thInternationalConfetenceonVeryLargeDataBases【C】.CairoEGYPT,2000.(上接第7401页)1)核心逻辑得以保持完整,横切代码也独立于原系统代码,模块间耦合度低,这样既利于核心逻辑代码的重用和维护,也有益于横切代码的重用和维护2)横切点明确清晰,通过对横切点的拦截链的维护,可以很容易的灵活伸缩横切操作。3)在以上两个特点的基础上的,比较容易构建应用中的可视化基础设施,方便的为核心业务处理利用。如图3。这种机制可能对Rash应用产生比较大的影响。4结束语图3可视化资源通过方面构成系统的基础设施本文讨论了在AetionScript中应用AOP设计方法的一种编织设计实现方式。该方法可以用于实际开发过程。也是对Action.Script的通用AOP框架的开发作了有益的探索,有利于随着Action,Scriptt语法和功能的扩充而实现真正意义上的AOP支持.这方面还需要作大量的工作。参考文献:f1】GregorKiczales,ErikHilsdale,JimHugunin,MjkKersten,JeffreyPalm,WjⅡj舢GGriswold.AnOverviewofAspectJ『DB/OU.InProeofECOOP,Springer2Vedag,2001.【2】ColyerA,ClementA.EclipseAspectJ中文版【M】.钱竹青,邹正武,等,译.北京:清华大学出版社,2006.[3】熊健,毛晓光.AOP技术在基于构件软件测试中的应用【J】.南京大学学报:自然科学,2005(1).【4】王振辉,吴广茂.SQL查询语句优化研究【J】.计算机应用,2005,25(12).【5]Zieke.SpringAOP框架[EB/OL].(2005—04—18).[2006-07-031.http://blog.csdn.net/ziekd.【6】李淼,白勇.基于领域特征的AOP编织实现方法【J】.计算机科学,2009(2).本栏目责任编辑:粱书-····计算机"rmilt用技术·-7403