编程范式概览
- 面向过程编程
- 面向对象编程
- 函数式编程
- 事件驱动编程
- 面向切面编程
AOP是什么
- 是一种编程范式,不是编程语言
- 解决特定问题,不能解决所有问题
- 是OOP的补充,不是替代
AOP的初衷
DRY: Don’t Repeat Yourself (不要写重复的代码)
SoC: Separation of Concerns (关注点分离)
关注点分离可以有很多种:
- 水平分离:展示层–> 服务层–>持久层
- 垂直分离:从业务模块划分(订单、库存等)
- 切面分离:分离功能性需求与非功能性需求
使用AOP的好处
- 集中处理某一关注点/横切逻辑
- 可以很方便地添加/删除关注点
- 侵入性少,增强代码可读性及可维护性
AOP的应用场景
- 权限控制
- 缓存控制
- 事务控制
- 审计日志
- 性能监控
- 分布式追踪
- 异常处理
- 等等
支持AOP的编程语言
Java、.Net 、 c/c++、 Ruby、Python、PHP…