首页 / 知识
什么是面向切面编程?
2023-04-11 16:19:00

一、前言
大家好,我是小诚,又到了愉快的学习时间,上一周因为小伙伴投稿,所以写了:《什么是面向接口编程》,文章颇受大家欢迎,于是又有小伙伴建议介绍关于:面向切面编程的知识点,于是就有了本篇文章,没办法,就是这么宠粉!(有亿点自恋…)
再唠叨两句,因为工作和个人要求原因,之前写得MySQL从0学习序系列好久没有更新了,但是,请大家相信,这个系列不会断更,小诚会要以更高的要求和质量继续编写,相信能够给大家带来更多更好的文章。
如果文章对你有帮助,可以帮忙一键三连和专栏订阅哦! 如面试中遇到一些奇怪或者比较新颖的题目,欢迎私信投稿,感谢阅读(私信我即可投稿)!
二、JAVA专栏推荐
二、专栏推荐
JAVA和MySQL技术专栏还在免费分享哦,大家可以帮忙点点订阅哦!
《JAVA知识大全》
《从0到1-全面深刻理解MySQL系列》
三、初次见面-面向切面编程
三、初次见面-面向切面编程
前一篇文章我们介绍了什么是面向接口编程,现在又来一个面向切面编程,两者到底存在什么联系呢? 下面慢慢道来!
AOP(Aspect-Oriented Programming的简称),也就是面向切面编程的意思,它是一种编程思想,在Spring的官方文档中描述: 面向切面编程(AOP)提供了另一种思考程序结构的方式来对面向对象编程(OOP)的进行补充和完善,面向对象编程(OOP)中关键的是对象,而面向切面编程(AOP)中关键的是切面。
AOP中切面可以实现关注点的模块化(即统一抽取,提高复用),例如跨越多种类型和对象的事务管理,这种关注点在 AOP 文献中通常被称为横切关注点。
单单看文字描述可能比较抽象,下面我们通过具体例子结合图片来形象化这些概念。
例子: 洗澡(声明,以下步骤是个人构想,不代表大家,如果觉的我的设想不够丰富的,欢迎评论留言,送你上热搜)
步骤(男): 脱衣服、唱歌、洗脸、洗头、洗身体、擦干身体、穿衣服
步骤(女): 脱衣服、洗脸、洗头、护发、洗身体、擦干身体、护肤、穿衣服
发现问题: 通过上面的例子,我们会发现无论男女,脱衣服、穿衣服是洗澡不可缺少的步骤,而且这两个步骤在“洗澡”这个业务不是核心,它只是一个关注点,因为脱衣服和穿衣服的场景并不只是在洗澡中存在(还有什么场景自己联想),就比如: 天气热我们需要脱衣服,天气冷我们需要穿衣服,所以,将衣服的管理定义成一个模块,然后在需要的地方调用才是是一个更加合理的设计,具体如下图:
小结
通过上一篇文章我们能够知道,面向对象编程(OOP)的出现让开发者能够实现纵向的业务逻辑处理,但面向对象编程(OOP)并不适合用于定义横向业务逻辑的关系,这样的设计会导致系统出现大量重复代码,复用性极差,如最常用的日志以及事务功能,它们都可能是横向的分布在不通的业务层级(对象层级)中,但是又和具体的核心业务无直接关系,诸如这样类型的代码,在程序中被称作横切(cross cutting),我们应该考虑将这一类代码进行统一管理,提高复用性。
面向切面编程(AOP)就是将这类与核心业务无关的,但又影响着多个类的公共行为抽取、封装到一个可重用模块,从而实现代码复用和模块解耦的目的,这种开发思想则被称为面向切面编程。
|
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python线程编程的两种方式
Python线程编程的两种方式,代码,包装,线程,培训,函数,对象,模块,参数,方式,方法,Python中如果要使用线程的话,python的lib中提供了两种方式。Python之__init__和__new__的区别
Python之__init__和__new__的区别是什么,工厂,设计,代码,生产,函数,灵活,培训,对外,实例,模式,真假构造函数如果你去面试Python工程师的岗位,文本处理用c还是用python
文本处理用c还是用python,位置,培训,包装,对比,字符串,函数,文本,语言,字符,效率,文本处理python与c的对比:如下c++语言:C++语言实现C++中没有python3标识符是什么?
python3标识符是什么?,数字,培训,名字,标识符,开头,代表,函数,大小写,变量,结尾,python中的标识符是用于识别变量、函数、类、模块以及其他对python实现报表用什么?
python实现报表用什么?,工具,工作,培训,报表,内容,参数,语言,终端,矩阵,语句,python中可以使用xlwt与xlrd库读写Excel报表。xlwtPython语言中Python中倒排列是倒序排列的意思
Python中倒排列是倒序排列的意思,培训,排列,字符串,对象,数组,意思,元素,以上,方法,更多,python中倒序排列的方法:1、数组倒序:原始元素的倒序python如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件python中怎么对一个数进行因式分解
python中怎么对一个数进行因式分解?,代码,培训,因式分解,因数,个数,最小,整数,数组,假定,分解,1、Python因式分解代码:importtime#对一个数进机器学习用java还是python?
机器学习用java还是python?,分析,环境,数据,培训,发展,机器,结果,控制台,生态环境,有用,机器学习用python更合适。机器学习不需要面向对象,不python是解释型吗?
python是解释型吗?,工作,平台,培训,解释性,虚拟机,语言,高层次,源码,脚本语言,之前,python是一种跨平台的计算机程序设计语言。是一个高层次python怎么在数组添加一行?
python怎么在数组添加一行?,培训,下标,维度,数组,列表,函数,形状,元素,代表,原型,python中在数组添加一行的方法:python中可以使用stack()函数