AOP面向切面编程
面向切面,在我的理解就是在不影响源代码的情况下,已一个切面的角度在想要的地放插入逻辑代码。通常是通过动态代理实现的。
场景
- 对于某一类操作的相同前置操作和或相同后置操作进行封装。例如,权限认证,日志
与OOP的不同
OOP针对业务处理过程的实体(Dog、Cat、Duck)及其属性和行为(run)进行抽象封装,以获得更加清晰高效的逻辑单元划分。
AOP则是针对业务处理过程中(run或jump)的切面(command和award)进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。