第一点,强制性
事件机制是一个不强制实现的机制,去不去响应这个事件完全由开发者确定。
而AOP 是修改了代码,所以一旦采用,那么就会强制执行。
所以从这个角度上讲,我觉得,如果是系统必不可少的部分,比如日志,权限等等,可以采用AOP来做,符合AOP的意义初衷:通过AOP把两个业务方面的代码组织到一起,形成一个完整的逻辑。AOP方便的切分了系统功能。
而事件,我感觉更像是一个通知消息。比如说,我现在吃饭,你随便啊。
第二点,中断流程
基于第一点,AOP更关注于业务,而事件更关注于状态和时机。所以如果两者需要中断程序继续执行,那么对于AOP是业务上通不过,对于事件机制,应该是状态不合法。
最后,我感觉这两种技术只是一种技术补充,代码中出现了太多的分分合合,太容易出问题了。主要的业务逻辑还是要集中处理好一些。