面向方面编程(AOP).ppt
《面向方面编程(AOP).ppt》由会员分享,可在线阅读,更多相关《面向方面编程(AOP).ppt(22页珍藏版)》请在三一办公上搜索。
1、AOP(面向方面的编程)技术,在本讲您能了解如下内容AOP技术概述AOP中的关注点AOP是OOP的扩展技术AOP的具体用途为什么要提供AOP利用AOP能够更好地满足OCP原则,1、面向方面的编程(AOP-Aspect-Oriented Programming),(1)什么是Aspect?中文直译通常是“方面”(更准确的应该为“切面”),但这个名词容易使人混淆或者太抽象。它其实是一种编程技术,(2)应用AOP的主要目的-尽量分离“技术问题实现”和“业务问题实现”它允许开发者能够对横切关注点进行模块化设计-“切面”的意义在于将业务逻辑中复杂问题分离成不同层面,使其实现统一集中的管理。能够实现分散关
2、注,将通用需求功能从不相关类之中分离出来。这样将能够更好地遵守“单一职责”原则;同时,能够实现代码重用。一旦行为发生变化,不必修改很多类,只要修改共享的类。,您理解其内涵吗?,您觉得抽象难懂吗?请继续,2、AOP技术起源(1)OOP技术的简要回顾 开发者可以用一组对象以及这些对象之间的关系将软件系统形象地表示出来-利用OOP能够更好地对系统进行抽象和描述,在设计规模大、逻辑复杂的系统时,开发周期反而能变的更短,请见文档中的说明,(2)面向对象设计的主要问题是,它本质是静态和封闭的静态的-很难达到动态地添加新的功能方法封闭的-任何需求的细微变化都可能需要对原有的类继续修改,从而对开发进度造成重大
3、影响。,(3)利用设计模式进一步完善OOP,解决OOP所面临的问题一个常用的方法是应用设计模式应用设计模式所体现出的优点-设计出灵活、可扩展、可重用的类库、组件,乃至于整个系统的架构,比如在GOF中提供“装饰器模式”来达到动态地添加新的功能方法,希望大家有时间系统地掌握“GOF”设计模式和J2EE核心设计模式!,(4)应用设计模式同样所面临的问题,然而鉴于对象封装的特殊性,“设计模式”的触角始终在接口与抽象中大做文章,而对于对象内部则无能为力。,比如在GOF中强调“面向接口”编程也就是希望我们的系统能够有更好的灵活性和可扩展性-分离“变化”和“不变”部分,这样在一定的程度上能够“适应变化”。,
4、因为,我们希望能够动态地调整对象的内部结构!同时也能够对对象中的方法执行过程能够控制-比如,能够拦截某方法,从而允许在方法执行之前或者执行以后,能够做点其它的事情!,OOP的“静态”特性很难达到此目的!,(5)AOP技术的产生,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析随着研究的逐渐深入,AOP也逐渐发展成一套完整的程序设计思想,各种应用AOP的技术也应运而生。,3、AOP是什么样的编程方法(1)首先了解什么是“分离关注”所谓的分离关注就是将某一通用的需求功能从不相关的类中分离出来同时能够使得很多类
5、共享该通用的需求实现-一旦该实现发生变化,只要修改这个“实现”就可以而不影响其它主功能实现。,(2)AOP就是这种实现分散关注的编程方法它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题(3)横切问题主要是指系统中的下面的各个方面的技术实现:事务、安全、日志、并发锁等横切关注。当未来系统变得越来越复杂,横切关注点就成为一个大问题的时候,AOP就可以很轻松的解决横切关注点这个问题。,(4)AOP实际是GoF设计模式的一种扩展设计模式所追求的是降低代码之间的耦合度-设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,增加程序的灵活性和可重用性AOP实际上就是设计模式所追求的目
6、标的一种实现或者说AOP实际是GoF设计模式的延续-分离“系统核心”和“外围功能”的各自实现。,您了解GOF及J2EE核心模式吗,4、AOP主要是把系统作为一批关注点来实现,(1)应用系统是由大量的关注点所构成的,比如,持久化、系统安全、日志记录、应用的业务逻辑通常被认为是应用需要解决的问题。因此,他们通常作为各自的关注点被看待和被处理。而从整个系统角度考虑,一个系统往往是由大量的关注点构成的。,(2)我们需要整理和分离系统的各个关注点,(3)应用系统中的常见的各个关注点-通过分层能够更好地隔离各个关注点,您了解为什么要这样吗,5、AOP是OOP的一种扩展技术,OOP与AOP相互配合-它们应该
7、相互配合,而不是相互排斥,(1)AOP和OOP在应用上的不同点,AOP是针对具体业务领域中的“技术逻辑”的实现;而OOP针对业务对象及其关系、业务逻辑的处理。,(2)OOP擅长解决纵向方面的问题,因为OOP允许我们定义从上到下的关系(纵向),但并不适合定义从左到右的关系(横向)OOP在实现对公共行为进行建模时,展示了强大的功能,但利用它对跨越多个模块的共性的“行为”进行建模时,OOP则显得无能为力。,(3)OOP不擅长解决横向方面的问题,OOP在通常的场合下工作得很好,但在特定的领域里却有所欠缺:举例来说,如果我们必须为多个对象和方法应用相同的事务行为,我们需要将同样的代码剪切/粘贴到每一个方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 方面 编程 AOP
链接地址:https://www.31ppt.com/p-5373061.html