AOP简单介绍

原创 2016年05月30日 15:29:53

  AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。

  当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种 散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

  而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为; 那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手 将这些剖开的切面复原,不留痕迹。就像下面的效果图,业务线走业务线,切面走切面,他们完好的结合在一起。

  

图解:

  业务线:图中的紫色竖条。
  服务类:图中的绿色横条。 
  服务类:像日志,权限,缓冲等跟具体的业务流程没有关系,没有这些服务,系统也可以正常运转,但是可以切入到每条业务线的某一个部分,增强业务线的功能,例如加入   日志后,可以分析日志,优化系统,或者通过日志发现系统运行时错误。

版权声明:本文为博主原创文章,转载请标明出处,谢谢!

相关文章推荐

简单描述对AOP和IOC的理解

(1)  ioc,意思是Inversion ofcontrol,(反转控制),控制反转,就是交换控制权的意思。现在一般不使用这个词,一般使用dependencyinjection(依赖注入)。依赖注入...

Spring的AOP简单介绍和常用配置(1)

一、AOP模块的认识 AOP:在我理解来,AOP就是在不增加代码耦合性的基础上,将你所要插入的代码插到合适的位置(前,后或者前后都可以)。 而其中有三个重要概念:advice,pointcut和a...

Spring的AOP简单介绍和常用配置(2)

在1中我简单的介绍了基于AOP标签配置的一种形式,并没有将前,后Advice以及异常Advice等配置罗列出来。 还是重复唠叨一下,基础AOP标签配置的好处和坏处都是什么: 好处:自动代理,不需要...

Spring的AOP简单介绍和常用配置(3)-事务配置

1.前言: AOP传统方式的xml配置虽然配置比较繁琐,但对于理解spring背后机制还是有非常大的帮助的。 传统方式的配置也有2种方式:一、自定义代理;二、自动代理(这个是基于传统的配置方式,并...

Spring Aop的简单实现

  • 2017-09-12 17:14
  • 16KB
  • 下载

Spring Aop实现简单日志记录

日志类 package com.jusfoun.estate.log.domain; import java.io.Serializable; import java.math.BigDecim...

spring AOP 简单实例

  • 2017-01-12 11:16
  • 11KB
  • 下载

Spring_AOP_简单入门示例

分享一个自己写的最为简单的Spring AOP的应用,其实,本人也是学习Spring不久,只是把一些个人的理解分享下,供参考。可能很多人刚开始不太理解到底啥是AOP,其实它也是相对OOP来说的,类似O...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)