下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅析软件设计方法之面向切面编程浅析软件设计方法之面向切面编程面向切面编程也叫面论文联盟向方面,英文简称AP(AspetrientedPrgraing)。是通过预编译方式、代码级扩展或运行期动态代理实如今不修改源代码的情况下给程序动态统一添加功能的一种技术。利用AP可以对业务逻辑的各个部分进展横向隔离,从而使得业务逻辑各部分之间的耦合度降低,进步程序的可重用性。1面向切面编程方式的产生在开发软件系统中,经常会遇到功能比较单一,在系统中分布广泛但是与详细业务逻辑无关的功能逻辑。例如日志,缓存等功能。这些功能比较独立,和业务逻辑的相关性不高,但系统的各层次都需要对其进展关注。以往系统开发,更注重把系
2、统纵向分层,相邻的层次间存在单向引用关系,不相邻的层次间互相透明,这是传统P开发方式带给系统架构方式。但这种开发方式只是将纵向的功能隔离,无法和各层次通用性的功能消除耦合关系,导致通用性的模块维护比较困难,因此引入横向切面的概念,将日志,缓存等这些通用性功能各作为一种横向切面,将需要进展这些功能处理的地方叫做切面关注点,将切面和其关注点的耦合关系剥离出来组成新的模块对切面及其关注点进展编织,这样使业务逻辑的开发人员不必关注于详细的切面逻辑,消除了切面功能和业务逻辑的耦合。这种开发形式就叫做面向切面编程(AP)。2面向切面编程的实现方式2.1提取横向切面一般提取切面的条件:1)功能逻辑相对独立;
3、2)功能逻辑不属于核心业务逻辑;3)功能逻辑在系统中屡次使用,通用性较强。2.2确定切面关注点业务逻辑中需要调用切面逻辑的地方即为切面关注点。此步骤可以根据业务需求确定使用切面逻辑的相关点。2.3对切面及其关注点进展代码编织定义切面逻辑在切面关注点得位置运行。3面向切面编程的实际应用下面代码以日志系统为例简单对AP使用进展描绘,例如代码为java使用AP之前,原系统需求:/效劳层的业务实现类publilassServiepublividupdateUserInf(Useruser)/业务逻辑代码实现,此处省略/添加日志Lg.Inf(neDate().tString()+:操作+Servie.u
4、pdateUserInf();publividsetUserDisable(intuserId)/业务逻辑代码实现,此处省略/添加日志Lg.Inf(neDate().tString()+:操作+Servie.setUserDisable();Servie使用下面使用AP对此进展重构:1)提取日志切面切面类publilassLgAspet/日志记录方式publistatividLg(stringethdNae)Lg.Inf(neDate().tString()+:操作+ethdNae);2)切面关注点这里Servie类的所有方法都需要日志,所以关注日志切面的点为Servie类的所有方法。3)对切
5、面及其关注点进展编织这里使用java内置的动态代理的方式来实现代码编织/为Servie类实现动态代理类ServieHandlerpublilassServieHandleripleentsInvatinHandler/要代理的原始对象,这里为Servie类privatebjetbjriginal;publiServieHandler(bjetbj)this.bjriginal=bj;publibjetinvke(bjetprxy,ethdethd,bjetargs)thrsThrablebjetresu/调用原始对象的方法result=ethd.invke(this.bjriginal,arg
6、s);/调用日志切面功能,组装到Servie类的每个函数调用后LgAspet.Lg(ethd.tString();returnresu4)执行调用方法初始化关注点对象论文联盟Servieservie=neServie();InvatinHandlerhandler=neServieHandler(servie);Servieprxy=(servie)Prxy.nePrxyInstane(servie.getlass().getlassLader(),servie.getlass().getInterfaes(),handler);详细调用prxy.updateUserInf(user);5)本
7、卷须知在现实的系统中,常常使用I配合AP使用,将详细业务调用对象依赖于抽象接口而不使用详细实现类,使用切面代理对象注入到调用对象用。这样对于调用对象而言,整个AP的过程都是透明的,因此到达完全解耦的效果。4面向切面编程的根本应用对于特定模块的根本操作,如业务层对事务的开启和关闭,应用层的日志记录,各模块权限断定等。在这些方面AP可以极大的减少业务逻辑中的冗余代码,使业务代码更明晰直观。java语言里,AP的框架在spring等一些主流框架中都有完善的处理机制,但是在.net平台还没有权威的框架支持,也于.net从语言级别不支持动态代理有关。5完毕语AP作为一种有效的软件设计方式,对原有的软件设计体系是一个有效的补充
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年民族特色街区旅游项目社会稳定风险评估协议
- 2026年区域间环境风险比较分析
- 2026年对环境风险评估的批判性思考
- 2026年机械设计中的图纸多样性
- 2026年民族特色街区全域旅游协议
- 2026年航空集装应急定位发射机定期维护合同
- 直播电商新风口下的2025年跨境电商直播基地项目可行性分析
- 2026年减少关联交易措施协议
- 数学组合数学在校园植物配置设计中的应用课题报告教学研究课题报告
- 2026江西宜春上高县招聘看护队员18人备考题库【历年真题】附答案详解
- 2025年兵团两委考试题及答案
- 通信建设项目管理
- 血液透析合并心力衰竭患者的护理要点
- 委托验资合同范本
- 2025年西安中考历史试卷及答案
- 车间5S知识培训课件
- (2025)辐射安全与防护培训考试试题(含答案)
- 宠物麻醉监护要点解析
- 2025年度中国质量检验检测科学研究院招聘工作人员(1人)笔试备考试题附答案详解(b卷)
- 建筑施工企业安全生产标准化自评报告
- 船舶公司保密管理制度
评论
0/150
提交评论