什么是面向切面编程AOP

AOP即面向切面编程,是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

什么是面向切面编程AOP-Worktile社区

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。

但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。

也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。

这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。

AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充

延伸阅读:

面向切面编程的作用

面向过程编程离我们已经有些遥远,面向对象编程正主宰着软件世界。当每个新的软件设计师都被要求掌握如何将需求功能转化成一个个类,并且定义它们的数据成员、行为,以及它们之间复杂的关系的时候,面向切面编程(Aspect-Oriented Programming,AOP)为我们带来了新的想法、新的思想、新的模式。

如果说面向对象编程是关注将需求功能划分为不同的并且相对独立,封装良好的类,并让它们有着属于自己的行为,依靠继承和多态等来定义彼此的关系的话;那么面向切面编程则是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。

面向切面编程是一个令人兴奋不已的新模式。就开发软件系统而言,它的影响力必将会和有着数十年应用历史的面向对象编程一样巨大。面向切面编程和面向对象编程不但不是互相竞争的技术而且彼此还是很好的互补。面向对象编程主要用于为同一对象层次的公用行为建模。它的弱点是将公共行为应用于多个无关对象模型之间。而这恰恰是面向切面编程适合的地方。有了 AOP,我们可以定义交叉的关系,并将这些关系应用于跨模块的、彼此不同的对象模型。AOP 同时还可以让我们层次化功能性而不是嵌入功能性,从而使得代码有更好的可读性和易于维护。它会和面向对象编程合作得很好。

文章标题:什么是面向切面编程AOP,发布者:小编,转载请注明出处:https://worktile.com/kb/p/35342

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编站长
上一篇 2023年1月12日 上午2:10
下一篇 2023年1月12日 下午7:02

相关推荐

  • dos病毒有哪些

    dos病毒有:1、引导型病毒;2、文件型病毒;3、混合型病毒;4、变形病毒。引导性病毒感染硬盘主引导区(MBR),再将硬盘正常的分区记录挪到其它扇区。每次开机,都能抢在操作系统启动之前驻留内存。

    2023年1月13日
    25700
  • 如何将文心一言的思想运用于个人成长

    本文探讨将《文心雕龙》中的“文心一言”理念应用于个人成长的有效途径。该观点的核心是内省、自我提升、坚持不懈和适度调整。内省是审视自我、确定成长方向的重要步骤;自我提升涉及知识学习和技能提高;坚持不懈是推动个人不断前进的动力;适度调整则帮助个人应对变化,保持成长路径的灵活性。通过这些观点的结合,可以有…

    2023年11月29日
    1300
  • 什么是强化学习

    强化学习是机器学习的一个分支,核心思想是通过与环境的交互,使代理(Agent)学习如何在给定的环境中采取行动,从而最大化某一预定义的奖励函数。与其他机器学习方法不同的是,强化学习不依赖于标记的数据集,而是通过试错的方式逐步学习策略。 强化学习是机器学习的一个分支,核心思想是通过与环境的交互,使代理(…

    2023年7月30日
    15000
  • 数据库审计系统是什么,有什么作用

    数据库审计系统是一种监控和记录数据库操作和活动的机制。作用有:1. 进行安全监控;2. 提供合规性证明;3. 进行性能分析;4. 识别故障风险。例如,数据库审计记录谁访问了数据库、何时访问以及执行了哪些操作,有助于发现任何未授权或可疑活动;通过监控和警报机制,可以及时发现和阻止潜在的数据泄露风险。保…

    2023年7月12日
    23000
  • 网络文档软件哪个好用

    网络文档软件软件有:一、word文档编辑;二、Office文档编辑;三、腾讯文档;四、石墨文档;五、讯飞文档。ord文档编辑这款应用比较适合目前大多数的办公用户,即使是没使用过的用户也可以通过基础入门教程来完成word编辑的学习。 一、word文档编辑 word文档编辑这款应用比较适合目前大多数的办…

    2023年4月24日
    13000
  • 软件需求分析用什么软件比较好

    软件需求分析软件有:一、Axure RP;二、StarUML;三、Microsoft Visio;四、FreeMind 思维导图软件。Axure RP是一款专业的快速原型设计工具,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图。 一、…

    2023年4月16日
    19000
  • WebAPI和框架API有什么区别呢

    WebAPI和框架API的区别在于二者的定义不同:Web API一般指基于http的编程接口,接口一般定义HTTP的:请求方法、请求路径、参数、响应数据格式、响应http code等。框架API的概念有点模糊。比如使用Spring MVC框架,它的API就是你使用SpringMVC过程中用到的所有东…

    2023年2月7日
    28000
  • 什么是数据库三大范式,它们是做什么的

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。 一、第一范式(1NF) 所谓第一范式(1NF)是指在关系模型中,对于…

    2023年6月4日
    7600
  • 什么是深度学习

    深度学习是机器学习领域中的一个子领域,它通过模拟人脑的神经网络结构,处理和分析大量数据。这种技术的核心是深度神经网络,通常含有多个隐藏层,能够从数据中学习复杂的模式和表示。它在图像识别、自然语言处理、声音识别等众多领域都取得了突破性的成果。 深度学习是机器学习领域中的一个子领域,它通过模拟人脑的神经…

    2023年7月30日
    16700
  • 云原生应用的数据持久性如何解决

    云原生应用的数据持久性的解决办法有使用云服务商的数据持久化服务、使用开源的分布式存储系统、自行搭建分布式存储系统、采用多副本架构保证数据持久性和使用数据库服务保证数据持久性等。详细介绍:1、使用云服务商的数据持久化服务,许多云服务商提供数据持久化服务,如AWS的S3、EBS等,这些服务具有高可用性、可扩展性和按需付费的特性,是云原生应用数据持久化的首选方案等等。

    2023年10月27日
    2500

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部