`
- 浏览:
367366 次
- 性别:
-
OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。
举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP/OOD的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。换而言之,OOD/OOP面向名词领域,AOP面向动词领域。
如果说面向对象编程是关注将需求功能划分为不同的并且相对独立,封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系的话;那么面向方面编程则是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。
面向方面编程和面向对象编程不但不是互相竞争的技术而且彼此还是很好的互补。面向对象编程主要用于为同一对象层次的公用行为建模。它的弱点是将公共行为应用于多个无关对象模型之间。而这恰恰是面向方面编程适合的地方。有了 AOP,我们可以定义交叉的关系,并将这些关系应用于跨模块的、彼此不同的对象模型。AOP 同时还可以让我们层次化功能性而不是嵌入功能性,从而使得代码有更好的可读性和易于维护。它会和面向对象编程合作得很好。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### 基于OOP和AOP的软件产品线实现技术研究 #### 一、引言 软件产品线(Software Product Line, SPL)是指在共享一组受控的公共特征的基础上,利用一组预先定义的公共核心资产来开发一系列软件应用系统的工程方法...
面向对象编程(OOP)引入了类和对象的概念,允许程序员封装数据和方法,以创建更加抽象和模块化的代码。OOP的三个主要特性是封装、继承和多态。封装隐藏了内部实现细节,提高了代码的安全性和复用性;继承使得子类可以...
"SOA实践 -- 使用IoC和AOP重构SOA应用" 这个标题揭示了本文档将探讨面向服务架构(Service-Oriented Architecture, SOA)的实际运用,特别是在应用中如何利用控制反转(Inversion of Control, IoC)和面向切面编程...
AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之。翻译过来就是“面向方面编程”,可我更倾向于翻译为“面向切面编程”。最好的演示案例...
AOP学术论文,近年来, 继面向过程编程和面向对象编程之后, 又一种新的编程思想被提出, 并被《MIT 技术评论》杂志评为...本文主要介绍了AOP 是如何产生的, 并阐述了它与OOP 的区别 与联系, 以及它们在设计模式上的比较。
在Java世界里,Spring框架是应用最广泛的轻量级框架之一,它的核心特性包括IOC(Inversion of Control,反转控制)和AOP(Aspect Oriented Programming,面向方面编程)。这两个概念是Spring框架的灵魂,极大地提升...
标题中的"aopalliance-1.0"和"aspectjweaver"这两个术语在Java编程领域,特别是面向切面编程(Aspect-Oriented Programming, AOP)中具有重要意义。这两个jar包是AOP框架的重要组成部分,用于实现动态代理和切面编织...
Spring AOP,全称为Aspect Oriented Programming,是面向切面编程的一种编程范式,它是对传统的面向对象编程(OOP)的一种补充。在OOP中,核心是对象,而在AOP中,核心则是切面。切面是关注点的模块化,即程序中的...
在 OOP 中只能通过继承类和实现接口来实现,但是这样的缺点是会使代码的耦合度增加,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP 的出现弥补了 OOP 的不足。 AOP 在 SpringBoot 中的应用 在 ...
这种轻量级的特性使得Spring AOP更易于学习和集成。 3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的...
面向切面编程(AOP)是软件开发领域的一项重要技术,它与面向对象编程(OOP)相对应,但关注点不同。在本篇中,我们将深入探讨AOP的基本概念、优势以及在Android开发中的应用,同时与OOP进行比较分析。 首先,面向...
面向切面编程(AOP)和面向对象编程(OOP)是两种不同的编程范式,它们各自具有独特的优点和应用场景。在理解这两种编程思想时,我们可以先从它们的基本概念出发。 面向对象编程(OOP)是目前最常用的编程范式之一...
在实践中,AOP通常与面向对象编程(OOP)结合使用,通过OOP来构建业务模型,而通过AOP来处理横切关注点。这种结合使得开发者能够在保持OOP的灵活性和封装性的同时,解决OOP难以处理的问题,从而实现更高效、更模块化...
AOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向方面编程。AOP 实际是 GoF 设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP 可以说也是这种目标的一种实现。 AOP...
**切面编程(AOP)**是面向对象编程(OOP)的一种补充,它提供了一种模块化横切关注点的方式,比如日志记录、事务管理、性能监控等。在本例子中,我们将探讨如何使用Spring框架实现AOP来记录日志。 **一、AOP概念**...
在传统的OOP中,业务逻辑和横切关注点(如日志、事务、安全性)混合在一起,而在AOP中,我们可以把这些关注点模块化,称为切面(Aspect),然后在运行时将它们织入到目标对象中,实现解耦。 Spring AOP主要通过两种...
面向切面编程(Aspect Oriented Programming,简称AOP)是一种编程范式,旨在解决传统面向对象编程(OOP)中的一些问题,如代码重复、高耦合度等。AOP的核心思想是将关注点分离,即把系统中分散的、横切多个对象的...
AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类封装了自己所必须的业务逻辑,导致类之间的耦合性太高,难以维护和修改。AOP 的出现使得程序设计变得更加灵活和可维护。 AOP 的核心概念包括: 1. 联结点(Joint...