1
Java编程最佳实践-AOP
Java 与 AOP
张传江
2
Java编程最佳实践-AOP
一个例子
一个需求开发的例子。
首先是需求分析
业务逻辑
存储
日志
安全
需求
关注点
标识
3
Java编程最佳实践-AOP
软件系统的关注点
关注点:
从技术的角度,分为
核心级关注点- 是系统要完成的业务功能。
系统级关注点- 是完成核心级关注点所必须的配套设施,这些配套设施通常被认为是整个系统的系统特性,或者是业务功能的功能约束。
例如:彩铃的用户铃音订购子系统
核心关注点是处理铃音订购;
系统级关注点包括权限检查/认证、事务、日志、安全和性能等等。
4
Java编程最佳实践-AOP
OOP现状
软件系统中,某个行为,例如操作日志的记录,存在于软件的各个部分。在很多情况下,这种行为不属于业务逻辑的一部分,不是业务逻辑调用的必须部分,但是,我们却不得不在代码中显式进行调用。并承担由此带来的后果。
5
Java编程最佳实践-AOP
OOP现状
在目前的技术框架下,通常系统级关注点在逻辑上相互之间彼此正交(相互独立),同时在实现上趋向于和若干核心模块交织。
6
Java编程最佳实践-AOP
OOP现状
核心级关注点(业务)多数情况下可以被很好地分解,并通过编程语言模块化实现(子模块或软构件)。
系统级关注点(横向关注点),使用当前的程序设计方法导致在许多构件中要重复包含(扩散)这些代码。
7
Java编程最佳实践-AOP
OOP的不足
目前的实现技术只提供了一维方法学实现系统的关注点,该单一维度一般是核心需求和关注点的模块化实现,其他类型的需求也被迫和该主导维度一致。
安全
事务
业务
业务主导维
问题空间是n维的,而解空间是一维的。这种失配必然导致需求和实现之间的失配。
8
Java编程最佳实践-AOP
OOP问题
缠结现象是现有软件系统中许多不必要的复杂性的核心。
它增加了功能构件之间的依赖性
分散了构件原来假定要做的事情
提供了许多程序设计出错的机会
使得一些功能构件难以复用
源代码难以开发、理解和发展
源程序就会变成一些为不同关注目的而编制的指令的缠结混乱物。
9
Java编程最佳实践-AOP
AOP的概念
AOP—Aspect-OrientedProgramming (面向方面/切面的编程)
AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
OOP是AOP的技术基础,AOP是对OOP的继承和发展。
10
Java编程最佳实践-AOP
AOP的本质
将横切关注点(如日志、权限验证、并发控制等非功能需求)单独用aspect实现,而业务功能用现有的软件技术实现。由AOP机制提供将这些分离的关注点编织为一个可执行程序。
提高代码的可理解性、可维护性、可复用性等
横切关注点
aop(spring) 来自淘豆网m.daumloan.com转载请标明出处.