Adrian Colyer在他的一篇随笔用最简单的话阐述了AOP的思想,其中concept:implment的概念让人眼前一亮.
在设计中捕获的概念和需求,在这个软件进化的过程中,往往也是发生变化的最小单元。一个设计到实现的1-1的映射是可以很容易的添加、删除、维护的,而一个1-n的映射相对来说就难得多,因为一个概念发生变化,你必须去更新很多地方——而且你必须保证一个不漏的改到,而且必须所有的修改必须是严格一致的。
当你开始以这种方式考虑AOP,我希望你会看到,AOP决不仅仅是现存软件系统的一些附属物/添加剂,而是软件程序的设计和实现框架中一个有机组成部分。这也可以解释为什么AspectJ直接扩展一种编程语言——Java——来整合AOP的概念。记住,我们的目标是实现1:1的关系,只要我们还没有达到这种1:1的平衡,无论哪边多一点都会带来麻烦,而AOP就是为了尽可能的接近这个1:1平衡。
有关AOP的思想可以参考我的 从责任分离的思想理解oo dp orm aop