AOP与OOP的区别

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

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。

同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOP对一个动作进行封装,则有点不伦不类。 换而言之,OOP面向名词领域,AOP面向动词领域。

总之,AOP可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,把散落在程序中的公共部分提取出来,做成切面类,这样的好处在于,代码的可重用,一旦涉及到该功能的需求发生变化,只要修改该代码就行,否则,你要到处修改,如果只要修改1、2处那还可以接受,万一有1000处呢。

最常用的AOP应用在数据库连接以及事务处理上。

实现模式可能为:代理模式+工厂模式

时间: 2024-11-10 13:04:50

AOP与OOP的区别的相关文章

spring 中的<aop:advisor>和<aop:aspect>有什么区别?

在xml中 <?xml version="1.0" encoding="UTF-8"?> <beans  xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.

AOP技术应用和研究--AOP简单应用

为了更好的理解AOP实践和体现AOP的优势,我们始终将OOP和AOP的比较贯穿到下文中.并在最终总结出AOP与OOP相比所拥有的优点,AOP的缺点以及AOP一般的使用场景. 1.1 问题空间到解空间的映射 在比较研究OOP和AOP实践之前,先让解决从理论上OOP和AOP解决问题的差别,也就是它们各自从问题空间到解空间的不同映射关系. 1.1.1"问题空间"和"解空间"的定义 在不同的文献中对其定义有着细微的差别,本文对其定义的如下:        问题空间(prob

【SSH进阶之路】Spring的AOP逐层深入——AOP的基本原理(六)

经过我们对Spring的IOC不断的深入学习,Spring的面貌逐渐变得清晰,我们对Spring的了解也更加的深入.从这篇博文开始我们学习Spring的第二大核心内容:AOP. 什么是AOP AOP(Aspect Oriented Programming),意思是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP基于IoC基础,是对OOP(Object Oriented Programming,面向对象)的延续.同时,AOP实际是GOF设计模式的延续,设计模式孜

也说AOP

前言 1.引言 2.Aop概念 3.Aop实践 4.总结 一.引言 对于初入行的小白来讲,aop,ioc这两个程序设计思想总是傻傻分不清,不知道是个什么东东?别人再一谈各种框架更是云里雾里...博主今天带大家且先入个门,哈哈:) 二.Aop概念 AOP为Aspect Oriented Programming的缩写,译为:面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 三.Aop实践 在开发中,相信大家都遇到过验证用户权限的事情,那是不是需要在每个界面上都要加个判断

C#编程:AOP编程思想

一.什么是AOP AOP:Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP思想的延续.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 为什么要学习AOP呢? AOP的应用场景非常广泛,在一些高级工程师或者架构师的面试过程中,频率出现的比较多. 二.编程思想的发展路线 1.POP POP:Procedure

Java之Spring知识点

1.AOP的概念是Aspected Oriented Programming 面向方面编程. 好处:AOP将程序分解成各个方面或者说关注点.这使得可以模块化,相当横向上分切了.它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务.安全.日志等横切关注 实现AOP有几种方式: 1. Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvi

JavaEE Spring

1.  Spring以一己之力撼动了Sun公司的JavaEE传统重量级框架(EJB),逐渐成为使用最多的JavaEE企业应用开发框架. 2.  Spring是分层的JavaEE应用一站式的轻量级开源框架,以控制反转(Ioc)和面向切面编程(Aspect Oriented Programming AOP)为内核,提供了表现层SpringMVC.持久层SpringJDBC以及业务层事务管理等众多的企业级应用技术. 3.  Spring的使命:简化Java开发.目标是实现一个易于开发.便于测试而又功能

Java程序员之Spring(一) 入门

一. Spring 原理讲解  Spring 是一个轻量容器框架(开源):Spring的核心是 IoC(控制反转) 和 AOP(面向切面编程): Spring 由7个模块组成: Spring Core(核心容器):核心容器提供 Spring 框架的基本功能: Spring Context(Spring 上下文):Spring 上下文是一个配置文件,向 Spring框架提供上下文信息; Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring

BTA 常问的 Java基础40道常见面试题及详细答案(山东数漫江湖))

八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动装箱,常量池 Object有哪些公用方法 Java的四种引用,强弱软虚,用到的场景 Hashcode的作用 HashMap的hashcode的作用 为什么重载hashCode方法? ArrayList.LinkedList.Vector的区别 String.StringBuffer与StringBuilder的区别 Map.Set.List.Queue.Stack的特点与用