将复杂的需求分解出不同方面,将散布在系统中的公共集中解决。
OOP:针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分
AOP:针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或者阶段,以获得逻辑过程中各部分之间低耦合的隔离效果。这两种设计思想在目标上有着本质的差异
1)核心关注点——注重于与商务逻辑,业务需求相关的功能模块
2)横切关注点——诸如日志(Logging),安全性(Security),持久化(persistence)这些共同需要的功能模块。
而AOP则是将横切关注点从核心关注点中分离出来,
代理模式
反射机制
1)静态代理模式
2)动态代理模式
代理类通过实现接口来说进行代理(JDK内置的InvocationHandler或者CGLIB)
绑定委托类(目标类)
public Object bind(Object target,Logging logging){
this.target=target;
this.logging=logging;
return Proxy.newProxyInstance(target.getClass().getClassLoad(),target.getClass().getInterface(),this);
}
AOP
1)Aspect 切面
2)Joinpoint 连接点
3)advice 通知
4)Pointcut 切入点
5)Target Object 目标对象
6)Proxy AOP代理
7) Weaving 织入
8)Introduction 引入
通知类型 (增强处理类型):
1)Before :前置增强处理,在目标方法前织入增强处理
2)After Returning : 后置增强处理,在目标方法正常执行(不出现异常)后织入增强处理
3)After Throwing :异常增强处理,在目标方法抛出异常后织入增强处理
4)After (finally) : 最终增强处理,不论方法是否抛出异常,都会在目标方法最后织入增强处理
5)Around : 环绕增强处理,在目标方法的前后都可以织入增强处理
</