概述
定义
官方定义:Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure.
面向切面编程是对面向对象编程的补充,它提供了另一种关于程序结构的思考方式
关注点
面向对象编程关注的是对象和对象的行为
面向切面编程关注的是多个类的某些方法(横切多个类的一个关注点模块)
涉及概念
- Aspect:切面,官方解释 a modularization of a concern that cuts across multiple classes ( 横切多个类的一个关注点模块),简单说就是对类具体行为的关注点集合
- Join point:连接点,一个连接点通常代表着一个方法的调用,通过获取连接点,我们可以控制在方法执行前后做一些控制,或是添加一些操作(代理)
- Advice:通知,切面在特定连接点上产生的动作,也就是我们要通过AOP实现的操作,类型:环绕通知aroud,前置通知before,后置通知after
- Target:目标对象,被一个或多个切面通知的对象,也被称为被通知对象
- Proxy Pattern:代理模式(1 控制被访问对象,2 给被访问对象提供额外功能)