AOP
2018-03-08 本文已影响0人
kindol
全称:Aspect Oriented Program(面向切面编程)
主要思想:在运行时,动态地将代码切入到类的指定方法、指定位置上
在OOP三大特点中,封装要求将不同功能分散到不同类中,实现解耦合,提高代码复用性。然而,在封装的同时,也发现了代码的重复性,好比每一个对象都需要日志系统,如果将日志系统独立开来,这样其余每一个对象都需要有一个日志系统对象,日志系统的改动也会带来其余对象的变化,这样将会带了较高的耦合性。
因而,解决办法来了。基于AOP的思想,动态地将代码插入到类中对应的方法、指定位置中。
切入到指定类、指定方法的代码片段称为切面,切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。
实际上,AOP其实只是OOP的补充。OOP是从横向上区分出一个个的类,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。
从技术上来说,AOP基本上是通过代理机制实现的。
AOP的存在价值:
AOP 专门用于处理系统中分布于各个模块中的交叉关注点的问题,在 Java EE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案