aop编程思想,什么是AOP

1,什么是AOP面向方法编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。搞那么复杂 面对对象的编程面向方面编程:Aspect Oriented ProgrammingAOP为Aspect Oriented Programming的缩写,意为:面向方法编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。
2 , 什么是AOP面向切面编程面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 。AOP与OOP是面向不同领域的两种设计思想 。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分 。AOP则是针对业务处理过程中的切面进行提?。娑缘氖谴砉讨械哪掣霾街杌蚪锥?nbsp;, 以获得逻辑过程中各部分之间低耦合性的隔离效果 。aspect oriented programming(面向切面编程),可以 通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一 添加功能的一种技术 。
3,什么是AOP编程面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容 。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率 。AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面(方面)编程 。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现 。【aop编程思想,什么是AOP】
4,aop思想是什么AOP就是“面向切面编程” 。只有当你真正的理解OOP之后 , 才可以理解AOP的思想 。这个思想 , 不是一两句就能将的明白的 。用个生活中的例子: 人的手可以写字,并且可以用很多中笔来写字 。例如,钢笔、铅笔、毛笔等等 。(这里抽象的说)如果我们要用到人的手写字的时候,就必须提供给手很多中笔,可是每种笔的类型有各自不同,我们说笔有很多不同的属性的功能 。如果才能让我们的手拿到任何一种笔都可以写字呢 , 我们可以这样做 。将钢笔、铅笔、毛笔等等笔定义一种公共的“笔”的类型,让我们的手在使用笔的时候,只需要知道要使用一个笔来写字,而不需要关心使用什么笔来写 。而决定给这只手用的笔的类型,就是你的事情了 。抽象成简单的代码: interface Pen{} class GangBi implements Pen{} class MaoBi implements Pen{} class QianBi implements Pen{} class Human{void usePen(Pen pen){} } 这个概念超级抽象 。不过,学习Spring框架可以快速的来理解这个概念 。5,什么是面向切面编程AOP面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装 。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配 。实际上也就是说,让不同的类设计不同的方法 。这样代码就分散到一个个的类中去了 。这样做的好处是降低了代码的复杂程度,使类可重用 。但是人们也发现 , 在分散代码的同时 , 也增加了代码的重复性 。什么意思呢?比如说 , 我们在两个类中 , 可能都需要在每个方法中做日志 。按面向对象的设计方法 , 我们就必须在两个类的方法中都加入日志的内容 。也许他们是完全相同的 , 但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来 。也许有人会说 , 那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用 。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了 , 它的改变会影响这两个类 。那么 , 有没有什么办法 , 能让我们在需要的时候 , 随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程 。一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点 。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为 。这样看来,AOP其实只是OOP的补充而已 。OOP从横向上区分出一个个的类来 , 而AOP则从纵向上向对象中加入特定的代码 。有了AOP , OOP变得立体了 。如果加上时间维度,AOP使OOP由原来的二维变为三维了 , 由平面变成立体了 。从技术上来说 , AOP基本上是通过代理机制实现的 。AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充 。面向对象的编程主要注重核心业务,而面向切面编程主要关注一些不是核心的业务,但又是必须的辅助功能,比如一个完整的系统中,记录平时系统运行时抛出的异常,需要我们去记录,以便我们对系统尽快的修复 。这就是我们常用的日志 。如果对一些要求比较重要的数据操作,事务是不可少的,如金融系统,这样的数据很重要 , 每步操作都很重要,我们就应该用到事务处理 。这就是我们常用的事务处理 。可根据你的系统数据的重要性,有选择的应用 。还用一个常用的就是安全验证了,它也是常用的,对于不同的页面,访问的身份也不一样 。这就是我们常用的身份验证 。以上这些不是针对特定那个业务模块的,可能针对所有的模块 。它们只是一些附加的功能,相对模块的主功能而言 。如果在每个模块中都夹杂着这些不是核心业务的代码,看起来与核心业务有点关系 , 但这样处理 , 会对以后的维护比较头疼 。同时也违背了面向对象的一条原则,自己对自己负责面向方面的编程主要是辅助核心业务的,它并不是核心业务,但它又是不可缺少的 。我们可以这样理解它与面向对象思想的联合使用 。其实面向方面编程就是把那些夹杂在核心业务方法里面的代码抽取出来并模块化,把它们单独看成一个模块功能.来与核心业务共同完成比较完善的功能.面向方面编程(aspect-oriented就是把那些不是核心业务应该处理的代码提取出来,进行封装成模块化.来处理那些附加的功能代码.(如日志,事务,安全验证)我们把这个模块的作用理解为一个切面,告诉我们它是一个功能模块.我们可以把它看成一个切面.说白了就是我们写一个类 , 在这个类中写一些处理在核心业务中起到同样效果的方法.这样大家应该明白了吧.专业的概念就是那么难理解. 第二个:连接点(joinpoint),简单的理解就是在切面模块中定义的方法.就是上面定义类中的方法. 第三个:切入点(pointcut).就是连接点的集合,就是一组方法的集合了. 以下几个就比较理解了,目标对象就是要处理的核心业务了.代理就更容易理解了,让一个代理去完成这个任务.

    推荐阅读