AOP(面向切面编程)
最近刚学习了Spring框架,学到AOP这一块,便看了一些相关的资料,在这里做一个学习的总结。按照以下几点来说明:
- AOP简介
- AOP的作用及优势
- AOP思想的总结
1.AOP简介
只要学过Spring框架,就会或多或少的了解过AOP这个概念,它是对OOP编程思想的一个扩展,也是Spring框架三大核心之一(IOC、DI、AOP),它的中文名叫面向切面编程,在网上搜索能搜到很多关于该思想的解释,在这里我就结合我在网上看到的一些资料和一些个人的理解,说一说什么是AOP思想,个人理解,如有不对之处请指正。
2.AOP的作用及优势
作用:
- 在程序运行期间,在不修改任何相关源码的前提下,对已有的方法进行增强
优势
- 减少重复代码、提高开发效率、维护方便
我们以银行取款取款流程作为例子来说明,看下图。
通过上面这幅图,我们可以看到两个主流程中都有相同的部分,用户验证部分。
实际开发中相同的验证流程可能会在项目的多个流程中出现。如果每个流程都写一遍的话,那是相当耗时的,这时我们第一想到的就是能不能把相同的部分提取出来,作为一个工具类。
但是这一类的操作都是和主流程无关的一些操作,但是又是必须要写的代码,如果作为工具类的话,我们还是得在这些主流程中去调用,还是麻烦。那能不能只操作一次就搞定呢?
解决方案:
这个时候我们就可以通过AOP来进行处理了,有了AOP后我们就不需要在编写主流程代码时添加验证用户的代码,你只需要在写完主控制流程的代码后,在另外的地方写一个验证用户的流程代码,然后让Spring将你写好的这段验证代码加到你需要的地方即可。
这样在程序运行的时候,Spring就会将该段验证代码加入到你指定的位置。这时就能实现,只操作一次就能在全部你需要该验证流程的地方加入这段代码,是不是很方便。这在开发中能在很大的程度上节约你的开发时间。并且由于将业务逻辑的不相关部分进行了隔离,从而使得业务逻辑各部分之间的耦合度降低了,提高了程序的可用性,同时也提高了开发效率
AOP思想的总结
通过上面的例子,我们大概能进一步了解AOP的作用和优势,在最后我们来说一下对该思想的理解。
首先我们可以将一个个的主控制流程想象成为一个个并排排列的圆柱体,程序执行的时候就是从圆柱的顶部一直到底部,而验证用户这个子流程就像是每个圆柱体的中间都插入一块木板,用来进行验证拦截。传统方式,我们需要为每一个圆柱添加都添加一块木板,这样非常的麻烦。
但是加入AOP思想后,我们就不需要这么麻烦了,我们将这些相同的木板从原来的圆柱体(主流程)中抽取出来,将这些木板合成一块大木板,然后从这些直线排列的圆柱的侧面,把木板横向的插入进去。只需一块木板,一次插入就能将验证流程一步到位的放入到各个圆柱当中。下图能帮助理解。