初始AOP

来源:互联网 发布:剑网三男捏脸数据 编辑:程序博客网 时间:2024/05/07 18:07

       前段时间听了关于AOP的讲解,不明白什么是AOP,只知道它是面向切面编程,用的好像是动态代理,具体的不太了解。最近学习了王老师的动态代理,顺便也简单的查询了一下什么是AOP。

一、概述

      AOP: (Aspect Oriented Programming) 面向切面编程。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。

二、与OOP的比较

       以前接触过OOP,它是面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

      而AOP所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

      举个例子:对于一个人来说,OOP是我们将人的相关属性和行为进行封装,让这个人作为一个业务实体进行调用,不用过多的去考虑人的相关细节,我们进行统一的复用即可。而对于一个人来说,用AOP去处理确实有点望尘莫及。但是针对吃东西这个动能,我们可以对其封装,然后让其对象进行复用。

      这两种设计思想在目标上有着本质的差异。OOP面向名词领域,AOP面向动词领域。OOP是公共行为的一个集合,而AOP是一个分散的功能片段。

三、原理

       AOP实现的关键就在于 AOP框架自动创建的 AOP代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP框架提供的命令进行编译,从而在编译阶段就可生成 AOP代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK动态代理、CGLIB 等在内存中临时生成 AOP动态代理类,因此也被称为运行时增强。

四、小结

      看来在前面不知不觉就已经将AOP的代码简单的实现,不过后期AOP还有很多地方值得我们挖掘,自己就先开个头,待后面好好挖掘。

0 0
原创粉丝点击