SpringAOP的基本概念以及和OOP的不同和比较
AOP(面向切面编程)与OOP(面向对象编程)
AOP提供了与AOP不同的抽象软件结构的视角,
程序的基本单元 | |
OOP | 类 |
AOP | 切面 |
在业务处理代码中通常有日志记录、性能统计、安全控制、事物处理、异常处理等操作。
尽管,使用OOP可以通过封装或继承的方式达到代码的重用,但仍然有同样的代码分散在各个方法中。
因此,采用OOP处理日志记录等操作:
(1)增加了开发者的的工作量
(2)提高了升级维护的困难
为了解决此类问题,AOP思想产生了
**AOP采用:**横向抽取机制,即将分散在各个方法中的的重复代码提取出来,然后在程序编译或者运行阶段将这些抽取出来的代码应用到需要执行的地方。这是OOP无法办到的,因为OOP实现的是父子关系的纵向重用。
需要注意的是AOP不是OOP的替代品,而是OOP的补充,他们是相辅相成的。
附:AOP横向抽取机制的与切面的关系图