面向切面编程,简称AOP,Aspect Oriented Program。
面向对象的特点是继承、多态和封装。封装就是将类的功能分散到不同的对象中。这样做可以降低代码的复杂程度,使类可重复使用。
但是,这种分散方式,也增加了代码的重复性。例如,在两个类中,都需要在每个方法中做日志,面向对象就必须在两个类中都加入日志的内容,可能日志内容完全相同,但面向对象的设计让类与类之间无法联系,所以造成不能将这些重复的代码统一起来。
这种情况下,我们需要在编码时,当我们需要某个方法的时候,随意的加入代码中。这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面编程。
切面:将切入的指定方法的代码片段成为切面。
切点:切入到的目标类或目标方法,称为切入点。
有了AOP,就可以将几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中,从而改变其原有行为!