1、什么是AOP?
AOP(Aspect Oriented Programming)是面向切面编程。
根据我的理解,AOP就是基于一个主体,扩展一些功能,且不需要改动原来的代码。使程序更加灵活。
AOP的原理就是代理模式。
2、什么是代理模式?
代理模式就是通过代理,控制对对象的访问。它的设计思路是: 定义一个抽象角色,使代理角色和真实角色分别去实现它。
真实角色:实现抽象角色,定义业务逻辑,供代理类调用。
代理角色:实现抽象角色,是真实角色的代理,在业务逻辑的前后附加其它操作。
3、静态代理
/**
* 业务接口
*/
public interface Service {
/**
* 业务方法
*/
void doService();
}
根据业务接口实现真实业务
/**
* 真实业务类
*/
public class MyService implements Service {
@Override
public void doService() {
System.out.println("do some service...");
}
}
再根据实现的业务添加前置后置等操作
/**
* 静态代理类
*/
public class StaticProxy implements Service {
/**
* 被代理对象
*/
private Service service;
/**
* 构造方法传递被代理对象
* @param service
*/
public StaticProxy(Service service) {
this.service = service;
}
@Override
public void doService() {
System.out.println("before");//置前拦截,可对参数进行判断
try{
this.service