一.AOP
AOP:面向切面的开发
面向对象:继承
继承:软件复用(代码的复用)
简单继承:B extends A,A中有方法
进一步,出现问题:方法中出现重复代码,如何复用?
class A{
public void a(){
before();
语句1
after();
}
private void before(){
{
//代码块1
}
}
private void after(){
{
// 代码块2
}
}
}
AOP思想
面向切面(多个方法)的开发
优点:
1.减少了软件的复用
2.需要给一个方法加功能,可以直接从切面上部加功能
class A{
public void a(){
语句1
}
public void b(){
语句2
}
}
class Aop{//让类AOP去切两个方法,自动在方法前后加上before和after方法。
public void before(){
{
//代码块1
}
}
public void after(){
{
// 代码块2
}
}
}
AOP的实现原理-三种代理模式
举例:小明租房子,通过房产中介(HouseAgent), 租到真实房东(HouseKeeper)的房子
其中房东:real
其中中介:agent
静态代理
可以隐藏真实对象(房东),可以对代理对象的方法增删改,但是接口不可变
动态代理-重点
JDK已经实现了动态代理,接口可以变更