面向切面的编程(Aspect-Oriented Programming)
面对对象编程使功能抽象到不同的类中去,这样做降低了代码的复杂度,也增强了代码的可重用性。但是有些类里面的方法还是有很多重复,要是把这些重复的代码写到一个独立的类中去,然后在有重用这个方法的类去调用这个独立出来的类的方法,虽然代码重复的部分少了,但是类的耦合就多了。而AOP就能让我们在需要的时候动态把代码加入到指定的地方。
一些概念:
切面:把切入到指定类指定方法的代码片段
切入点:把切面切入的目的地(类或方法)
横切关注点:不同的类可能有着共同的行为,这种共同的行为被称为横切关注点
其中,切面 是在AOP思想中引入的一种 新的编程单位,它使得 横切关注点模块化 ,这对现有的设计模式产生了非常重大的影响。根据AOP的理念,我们就可以把多个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。AOP 思想的精髓能够将横向的关注点分离出来,这大大提高了我们认识世界和抽象世界的能力。
总的来说,AOP实质上只是OOP的补充而已。OOP 从横向上区分出一个个的类来,而 AOP 则从纵向上向对象中加入特定的代码,也就是说 AOP 的出现使得OOP变得立体了。从技术上来说,AOP 基本上是通过 代理机制实现的。