资讯专栏INFORMATION COLUMN

关于AOP(面向方面的编程)

Pocher / 3072人阅读

摘要:与的全称是面向方面编程,这是于年在提出的一个术语。这儿将与面向对象编程相比较。这行代码的关注点,即方面,就是用户合法性校验。横切性问题的目标是将横切行的问题以一种更加通用的方式模块化,从而提升程序的模块化程度。

AOP

AOP这一术语,近些年越发流行了。在java开发者社区里,学习使用Spring开发框架时,必定会涉及到AOP。不了解AOP不影响学习和使用Spring框架,不过在了解AOP之后,对于开发企业级应用则更加有利。本文视图以通俗的方式,整理一下AOP知识,以供初次接触的同行参考。

AOP与OOP

AOP的全称是 面向方面编程 (Aspect-Oriented Programming),这是Gregor Kiczales于1996年在PARC提出的一个术语。AOP是一种与OOP截然不同的看待应用程序结构的方式,按照AOP的观念,系统被分解为方面(aspect)或者关注点(concern),而不是对象。

这儿将AOP与OOP(面向对象编程 Object-Oriented Programming)相比较。Java开发者一般都比较熟悉OOP,大家都知道,OOP方式带来的最大好处就是代码复用,通过三大特性:封装、继承、多态,来复用代码。不过,若与AOP相比较,OOP的代码复用成程度,还差了那么一点儿。

代码复用

一般情况下,OOP能够很好地避免代码重复。具体继承可以帮助我们在不同类型之间共享相同的行为,多态可以让我们可以用相同的方式处理不同类型的对象,将注意力集中到它们的共同之处。但是,有些时候,我们无法用OOP避免代码重复,或者无法用OOP得到一个优雅的解决方案。

举一个很简单的栗子,假设我们有一个类,类里有一个公开方法是用来验证用户合法性的。那么这个公开方法,必然会其它很多类里被调用,而且调用方式都一样,伪代码如下ConcreteClassInstance.auth(userInstance)。虽然重复的地方只是这一行,但这种代码将毫无规律地散布在整个对象模型中,造成无法避免代码的重复。

这行代码的关注点,即方面,就是用户合法性校验。采用AOP的话,我们可以达到这样的效果:仅在一个地方声明:当某某条件发生时,进行用户合法性校验。权威一点的解释就是:我们可以多带带编写用户和合法性校验的代码,将其包装成一个方面(aspect),然后我们可以告诉AOP实现产品,如何在将方面织入(weave)到程序流程之中。具体的织入策略也有好几种,比如:代码生成和预编译,动态字节码生成、JavaEE的动态代理。

横切性问题

AOP的目标是将横切行(crosscutting)的问题以一种更加通用的方式模块化,从而提升程序的模块化程度。什么是横切性问题?即一个关注点(比如用户合法性检查)的实现代码,散落在很多个类或方法之中。很多企业级问题都具有横切性,比如事物管理、安全性、资源相关操作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68039.html

相关文章

  • 慕课网_《Spring入门篇》学习总结

    摘要:入门篇学习总结时间年月日星期三说明本文部分内容均来自慕课网。主要的功能是日志记录,性能统计,安全控制,事务处理,异常处理等等。 《Spring入门篇》学习总结 时间:2017年1月18日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://git...

    Ververica 评论0 收藏0
  • Swoft 源码剖析 - Swoft 中 AOP 实现原理

    摘要:官方在文档没有提供完整的但我们还是可以在单元测试中找得到的用法。解决的问题是分散在引用各处的横切关注点。横切关注点指的是分布于应用中多处的功能,譬如日志,事务和安全。通过将真正执行操作的对象委托给实现了能提供许多功能。源码剖析系列目录 作者:bromine链接:https://www.jianshu.com/p/e13...來源:简书著作权归作者所有,本文已获得作者授权转载,并对原文进...

    chenjiang3 评论0 收藏0
  • Spring AOP就是这么简单啦

    摘要:是一种特殊的增强切面切面由切点和增强通知组成,它既包括了横切逻辑的定义也包括了连接点的定义。实际上,一个的实现被拆分到多个类中在中声明切面我们知道注解很方便,但是,要想使用注解的方式使用就必须要有源码因为我们要 前言 只有光头才能变强 上一篇已经讲解了Spring IOC知识点一网打尽!,这篇主要是讲解Spring的AOP模块~ 之前我已经写过一篇关于AOP的文章了,那篇把比较重要的知...

    Jacendfeng 评论0 收藏0
  • Spring框架学习笔记(一):官方文档介绍,IoC与AOP概念学习

    摘要:构造函数注入通过调用类的构造函数,将接口实现类通过构造函数变量传入。而在中,其使用横切技术,将这类代码从原属的封装对象中提取出来,封装到一个可重用模块中,称为。 最近实习用到Spring的开发框架,但是之前没有接触过,因此希望利用网上的资源来学习以下。 Spring官方给出了非常全面的介绍,非常适合我这种完全的小白……在这一系列学习中,我阅读的主要资源是5.1.2 Reference ...

    mindwind 评论0 收藏0
  • Spring入门IOC和AOP学习笔记

    摘要:入门和学习笔记概述框架的核心有两个容器作为超级大工厂,负责管理创建所有的对象,这些对象被称为。中的一些术语切面切面组织多个,放在切面中定义。 Spring入门IOC和AOP学习笔记 概述 Spring框架的核心有两个: Spring容器作为超级大工厂,负责管理、创建所有的Java对象,这些Java对象被称为Bean。 Spring容器管理容器中Bean之间的依赖关系,使用一种叫做依赖...

    wenyiweb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<