要理解AOP我们先要理解其他一些概念:
- 面向过程编程
- 面向对象编程
- 面向切面编程
面向过程编程OPP
面向过程的编程思想将就是将一个大任务分解为一个一个小的任务,我们通过完成一个一个的小的任务来完成一个大的任务,然后就结束了。常用的编程语言有C语言,它
- 优点:符合我们人类的思维,编写起来相对比较简单
- 缺点:但是这种方式编写代码的往往只适用于一个功能;如果要在实现别的功能,即使功能相差极小,也往往要重新编写代码,所以它可复用性比较低,并且难于维护。
OOP:面向对象编程
面向对象编程其实就是模拟人类世界,把程序事物都抽象成一个对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法。面向对象编程是面向过程编程的演变。目前面向对象编程语言有:Java,C++,Objective-C,C#,它
- 优点:复用、易维护、修改、效率高、易扩展
- 缺点:需要一定的软件支持环境、初学者不易接受、难学
AOP:面向切面编程
AOP(Aspect Oriented Programming)意为面向切面编程。这项技术更多是面向对象语言的技术的补充,例如:
我们 现在开发的项目有登录业务,订单业务,物流业务,其他业务。现在要对这些业务加日志,最原始的方法我们在一个个业务代码中加入日志代码,一个还好,要是10个,100个了,对原有代码侵入极强,而且日志代码不是业务核心的代码,不宜维护。就是在这种类型需求背景下,产生了AOP技术。AOP指程序在编译期和运行期间动态代理实现程序功能的统一维护的一种技术。
- 常用使用场景:
日志,性能监控,持久化,数据校验,缓存,事务管理等等。 - 常用技术
反射,动态代理,AspectJ,ASM
AOP又可以细分三类
- 切面: 对一类行为的抽象,是切点的集合,比如在用户访问所有模块前做的权限认证。
- 切点: 描述切面的具体的一个业务场景,如只在登录相关数据校验
- 通知(Advice)类型: 通常分为切点前、切点后和切点内,比如在方法前织入代码是指切点前。如性能日志
总结
文章主要介绍了什么是AOP,跟其他编程语言有什么不同,在什么情况产生的,及细分类别。要了解AOP后续会补充
- Java和Android编译器,运行期
- 反射、动态代码
- 注解、APT
- AspectJ,ASM、Javassist