面向方法编程AOP学习之一 —— 新知新觉

引言:

       在编程的学习之路, 我们经常在讲着面向过程还是面向对象,但总归是一个程序执行流的方式,代码一行行的执行下去,但对于面向方法编程(AOP),个人感觉,它的实现方式,让人焕然一新。AOP的学习,不仅仅在于一种应用,更是一种思路的学习。我很感叹这种编程方式,在不改变原有的实现方式代码下,增加新的功能。

       在Spring中的AOP提到了AOP可以用来做日志、事务等等。

       如举个简单的例子:对程序中类一个类中的某一接口方法在被调用时,我需要在调用它之前或之后做一些想做的处理呢?而做这些处理的动作在于不改变原有代码的情况下。

       对于它的好处,我深信不疑,我也相信对它的学习,会在我今后的工作中,也起到很大的帮助作用。所以我想深入的去学习它,从了解它的思路,到Spring的AOP实现方式,实现原理。学的不仅仅是一种应用,更是一种思想的改革。

概念:

       引用百度百科里面的一段描

写道
AOP为Aspect Oriented Programming的缩写,意为:面向方法编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。
AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面(方面)编程。
  主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。
  主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

AOP切图

  

 相关框架:

      

    在AOP的世界里面,留给我们的有很多的框架,其中,如Spring in Action 这本书中提到的三大成熟的框架:

■ AspectJ (http://eclipse.org/aspectj)
■ JBoss AOP (http://labs.jboss.com/portal/jbossaop/index.html)
■ Spring AOP (http://www.springframework.org)

感想:

      在AOP的世界里,你可以暇想着,不再会因为业务方多变的需求,而去大量的原有代码中进行修改,经常性的代码修改,出现问题的情况时有发生。但aop的实现方式,让你的实现方式大大简单了,虽然并不是对所有的需求变更都可以用这样的方式实现。

      举一简单的例子,如果有一个突然到来的需求说:如果用户新注册成功的时候,就自动发送红包。

      这时,可以不去更改原来已经方法,而只要在新用户注册成功把信息存入数据库中的那个方法,加入一个切入点,在方法执行完之后,执行相应的处理代码。这个需求就很轻松的实现了,而且,测试简单,不会轻易引入新的bug问题。

其他相关

      面向方法编程AOP学习之二 —— “原始时代”

猜你喜欢

转载自sammor.iteye.com/blog/1054404