知识卡片
动态代理是AOP在不修改源码前提下增强行为的基础
内容
[[动态代理用InvocationHandler接管方法实现]]的价值不止省去手写代理类,更让”不改代码就 增强行为”系统化,这正是AOP的核心机制。如在invoke()里判断方法名为login就额外发通知, 真实业务代码不用改动。日志、事务、权限校验等横切关注点都可事后用AOP方式”切”进去。发散: AOP不是新技术,只是把代理模式的拦截能力系统化、配置化了。
参考来源
- 位置:《设计模式之禅(第2版)》第12章《代理模式》(源文件:_epub-src/text/part0056.html)
- 结论依据:原文展示在invoke方法里判断method.getName()为"login"时额外发送提醒信息、不修改GamePlayer源码即可实现该增强,并总结"AOP编程没有使用什么新的技术,但是它对我们的设计、编码有非常大的影响,对于日志、事务、权限等都可以在系统设计阶段不用考虑,而在设计后通过AOP的方式切过去"。
- 原始内容:如果是登录方法,则发送信息……AOP编程没有使用什么新的技术,但是它对我们的设计、编码有非常大的影响,对于日志、事务、权限等都可以在系统设计阶段不用考虑,而在设计后通过AOP的方式切过去。