转自:http://wayfarer.cnblogs.com/articles/241012.html
1、引言
软件设计因为引入面向对象思想而逐渐变得丰富起来。“一切皆为对象”的精义,使得程序世界所要处理的逻辑简化,开发者可以用一组对象以及这些对象之间的关系将软件系统形象地表示出来。而从对象的定义,进而到模块,到组件的定义,利用面向对象思想的封装、继承、多态的思想,使得软件系统开发可以向搭建房屋那样,循序渐进,从砖石到楼层,进而到整幢大厦的建成。应用面向对象思想,在设计规模更大、逻辑更复杂的系统时,开发周期反而能变的更短。自然其中,需要应用到软件工程的开发定义、流程的过程控制,乃至于质量的缺陷管理。但从技术的细节来看,面向对象设计技术居功至伟。然而,面向对象设计的唯一问题是,它本质是静态的,封闭的,任何需求的细微变化都可能对开发进度造成重大影响。
可能解决该问题的方法是设计模式。GOF将面向对象软件的设计经验作为设计模式纪录下来,它使人们可以更加简单方便地复用成功的设计和体系结构,帮助开发人员做出有利于系统复用的选择。设计模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更好。然而,设计模式虽然给了我们设计的典范与准则,通过最大程度的利用面向对象的特性,诸如利用继承、多态,对责任进行分离、对依赖进行倒置,面向抽象,面向接口,最终设计出灵活、可扩展、可重用的类库、组件,乃至于整个系统的架构。在设计的过程中,通过各种模式体现了对象的行为,暴露的接口,对象间关系,以及对象分别在不同层次中表现出来的形态。然而鉴于对象封装的特殊性,“设计模式”的触角始终在接口与抽象中大做文章,而对于对象内部则无能为力。
Aspect-Oriented Programming(面向方面编程,AOP)正好可以解决这一问题。它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
面向方面编程(AOP)是施乐公司帕洛阿尔托研究中心(Xerox PARC)在上世纪90年代发明的一种编程范式。但真正的发展却兴起于近几年对软件设计方兴未艾的研究。由于软件系统越来越复杂,大型的企业级应用越来越需要人们将核心业务与公共业务分离。AOP技术正是通过编写横切关注点的代码,即“方面”,分离出通用的服务以形成统一的功能架构。它能够将应用程序中的商业逻辑同对其提供支持的通用服务进行分离,使得开发人员从重复解决通用服务的劳动中解脱出来,而仅专注于企业的核心商业逻辑。因此,AOP技术也就受到越来越多的关注,而应用于各种平台下的AOP技术也应运而生。但由于AOP技术相对于成熟的OOP技术而言,在性能、稳定性、适用性等方面还有待完善,同时AOP技术也没有形成一个统一的标准,这使得AOP技术的研究更具有前沿性的探索价值。
分享到:
相关推荐
### 基于OOP和AOP的软件产品线实现技术研究 #### 一、引言 软件产品线(Software Product Line, SPL)是指在共享一组受控的公共特征的基础上,利用一组预先定义的公共核心资产来开发一系列软件应用系统的工程方法...
在C++这种强大的编程语言中引入AOP技术,可以显著改善代码的可维护性和可扩展性。本文档由来自德国埃尔朗根-纽伦堡大学的Daniel Lohmann和Olaf Spinczyk编写,主要探讨了如何利用C++来实现面向切面编程。 #### 二、...
论文的结构包括引言、系统设计概述等多个部分,详细阐述了系统功能描述、需求分析、可行性研究和技术框架等内容。在需求分析中,对问题进行了定义,探讨了系统实施的可行性,并明确了电信运营管理系统的技术要求。在...
1. **性能**:Spring框架通过采用AOP技术实现了高效的模块化设计,使得开发者可以根据具体需求选择性地加载组件,从而提高系统的整体性能。 2. **稳定性**:Spring框架经过多年的发展和完善,已经非常成熟稳定。它...
为了提升软件的安全性,研究人员和开发者们正不断探索新的技术和方法。传统上,软件安全功能的实现往往分散在整个系统之中,这种分布式的实现方式不仅增加了代码的维护难度,还降低了安全功能的可重用性。因此,如何...
#### 引言 随着企业信息化进程的推进,基于B/S(浏览器/服务器)模式的J2EE多层架构成为主流的Web应用开发方案。然而,传统J2EE开发受到核心组件EJB模型限制的影响,导致其应用范围受限。为了克服这些限制,许多...
为了更好地理解上述设计思想和技术的实际应用,我们可以考虑一个具体的案例——中大型B/S结构的应用系统开发。 1. **领域建模**:在这个案例中,可以将业务划分为多个模块,比如订单管理、库存管理等,每个模块都有...
### Hibernate在Spring中的研究与应用 #### 摘要与关键词解析 本文主要探讨了Hibernate在Spring框架中的应用,分析了两者如何结合使用,并通过一个具体案例介绍了它们的整合方法。文章最后指出,利用这两种技术...
### 多Agent协作学习系统的设计与实现 #### 一、引言 随着信息化时代的到来,远程教育成为一种重要的学习方式。...未来的研究将进一步探索如何利用大数据和人工智能技术优化多Agent协作学习系统的性能和用户体验。
Spring框架以其强大的IoC容器、AOP支持以及对多种技术的集成能力而闻名,而Hibernate作为对象关系映射(ORM)工具中的佼佼者,能够将Java对象映射到关系数据库中,简化了数据访问层的开发工作。本书《Spring ...
#### 引言 随着开源Spring框架的首次亮相,它为Java EE平台提供了一个统一的世界观,并极大地简化了这一平台。和其他框架一样,Java EE也伴随着一系列最佳实践——即对于如何使用该平台的指导建议。Spring框架...
#### 引言 在探讨Struts2与Spring框架的整合之前,我们先简要回顾一下Struts2框架的由来与特性。Struts2作为Struts1的升级版,借鉴了WebWork框架的成功之处,特别是在WebWork2之后的革新中汲取灵感,引入了插件机制...
### 通过集成AADL和面向方面的方法对网络物理系统进行QoS建模 #### 摘要概述 本文提出了一种基于AADL...未来的研究方向包括进一步完善AADL的扩展机制,探索更多的应用场景,以及与其他建模工具和技术的集成。