AOP面向切面编程——小区的“万能门禁卡“
第322篇:AOP面向切面编程——小区的"万能门禁卡"
你有没有想过一个问题:
生活场景:物业的"万能权限卡"
你住的小区有门禁系统。早上出门:门禁卡刷一下。
晚上回家:门禁卡刷一下。
快递到了:门禁卡刷一下。
朋友来访:门禁卡刷一下。
每次刷卡,门禁系统都会做三件事:
- 验证身份——是不是本小区的人?
- 记录日志——谁、什么时间、进了哪个门
- 执行操作——开门
问题是:这3件事在每个场景里都是一样的,但你总不能在每个地方都写一遍吧?
技术故事:横切关注点
软件开发中,有些逻辑是横跨多个模块的,比如:
- 日志记录——每个接口都要记日志
- 权限验证——每个操作都要检查权限
- 事务管理——每个业务操作都要开启/提交事务
- 性能监控——每个方法都要计时
如果每个地方都写一遍,就像:
public</