AOP基础及底层原理
Aspect Oriented Programming
切面编程
1. 理解
AOP被称为横向切面编程,是OOP编程思想的延续,换句话讲就是:
OOP是纵向编程,编程思路是按照逻辑顺序向下进行,
而 AOP则是在原有的编程基础上进行横向扩展,例如为原有的程序增加日志或者权限检查的功能,并且不能改变原有的代码
并且对于一些重复出现在类或者方法中的代码就可以考虑使用AOP思想
2.面对的问题及解决方式
了解AOP的思想,那么在想要实现的功能时最主要的问题就是:
- 怎么在不修改原来的代码时增加功能
解决方式就是使用代理模式:
代理的概念就是新建一个代理类,实现代理类的方法
反映在代码上:
//接口A
Interface A{
m1();
}
//实现类
public class A Implement A {
//重写后的方法
m1();
}
}
//代理类
public class B Implement A {
private A a ;
public B ( A a){
this.a = a;
}
//重写方法
m1(){
//需要增加的功能
a.m1();
}
}
对应AOP思想则是使用相同接口的实现代理类:
或者基于继承该类实现代理
//代