什么是面向切面编程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

相关推荐

  • devops是什么职位 前端

    摘要 DevOps与前端开发,乍看之下属于信息技术行业的两个截然不同分支,实则彼此间存在深入的联系与无缝的协作可能性。1、DevOps(Development和Operations的混合词)专注于软件开发(Development)与信息技术运营(Operations)的整合,旨在缩短系统开发生命周期…

    2024年3月26日
    1200
  • devops跟ansible什么关系

    摘要 DevOps与Ansible之间的关系,主要表现在三个方面:1、自动化工具的融合、2、提升工作效率、3、支撑持续集成与持续部署(CI/CD)流程。在这三者之间,特别突出的是自动化工具的融合。Ansible,作为自动化管理工具,其设计初衷便是为了简化IT自动化过程。使用Ansible可以极大地减…

    2024年3月26日
    1600
  • html怎么下载

    下载html的步骤:1、点击浏览器菜单栏列表;2、选择将页面另存为;3、选择要保存html文件所在的地方。点击浏览器菜单栏列表是指,在浏览器书签栏的右端,可以看到表示扩展到三个点,点击即可展开菜单栏。 1、点击浏览器菜单栏列表 以Microsoft Edge浏览器为例,如图所示,点击书签栏最右端按钮…

    2023年3月16日
    3.3K00
  • devops模式是什么

    开篇明义,DevOps模式是一种强调软件开发(Dev)与信息技术运维(Ops)之间沟通、协作与集成的文化与实践,旨在缩短系统开发生命周期,提供高质量的软件持续交付。1、文化与实践的结合,DevOps追求开发团队和运维团队的紧密合作;2、自动化流程,通过软件交付流程的自动化,提高效率与准确性;3、持续…

    2024年3月26日
    1400
  • 常用的流程优化方法有哪些

    常用的流程优化方法有:1、标杆瞄准法;2、DMAIC模型;3、ESIA分析法;4、ECRS分析法;5、SDCA循环。其中,标杆瞄准法又叫做benchmarking,它是指企业把自己的服务,经营实践,产品以及成本,和很多在相关方面表现非常优异有成效的企业做比较。 一、标杆瞄准法 这个标杆瞄准法又叫做b…

    2023年4月19日
    81800
  • 软件版本管理工具有哪些

    软件版本管理工具有:一、SVN;二、Git;三、HG;四、CVS。SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。 一、SVN SVN全称为:Apache Subvers…

    2023年3月31日
    2.5K00
  • 如何构建企业级的知识库:步骤指南

    构建企业级的知识库的步骤:1、明确知识库的目标;2、了解用户需求;3、研究不同的知识库平台;4、选择最适合的平台;5、定义知识库的结构;6、建立标准化的分类体系;7、梳理现有文档和信息;8、创建知识库入口文档;9、设立知识库的权限体系;10、指定知识库管理员;11、进行知识库推广;12、提供培训和支持;13、设立定期更新机制;14、收集用户反馈等等。

    2023年11月16日
    63200
  • 什么是阻塞队列

    什么是阻塞队列:阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 一、什么是阻塞队列 阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的…

    2023年5月9日
    33700
  • oa云会议

    云会议的优势在于实现地域无界限沟通、提升工作效率、节省企业成本、确保数据安全、提供即时的技术支持。在详细描述方面,节省企业成本尤其值得关注。企业运用云会议可减少对物理会议空间的需求,降低差旅和住宿的开销,同时云服务通常按需付费,进一步减轻了企业的经济负担。 一、云会议的概念与运作机制 云会议,即基于…

    2024年1月11日
    27300
  • 原生app开发的优缺点是什么

    原生开发(Native App开发),是在Android、IOS等移动平台上利用提供的开发语言、开发类库、开发工具进行App软件开发。比如Android是利用Java、Eclipse、Android studio;IOS是利用Objective-C 和Xcode进行开发。 一、优点 1、可访问手机所…

    2023年5月31日
    53100

发表回复

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

400-800-1024

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

分享本页
返回顶部