面试题总结

面向切面编程(AOP)关注问题的横向切面,如日志、事务处理,将这些通用逻辑抽取成切面,减少代码重复。相比之下,面向对象编程(OOP)通过类和对象实现功能封装和抽象。AOP通过切面和切点定义关注点,提高代码可维护性,而OOP则注重类和对象的封装、继承和多态。
摘要由CSDN通过智能技术生成

1.如何理解面向切面编程?和面向对象编程做个对比,最好举例子说明
参考答案:
面向对象编程(OOP)的主要思想是将系统中的事物抽象为对象,这些对象拥有自己的属性和方法,并通过相互通信合作完成目标。在OOP中,通过类和对象来组织代码,将功能进行封装和抽象,提高代码复用度、可维护性和可扩展性。

而面向切面编程(AOP)则是一种关注问题横向切面的编程方式。它不关心每个模块的具体实现,而是关注相同业务领域内所有模块共同的问题,比如记录日志、事务处理、性能监控、安全校验等,将这些跨越多个模块的问题提取出来,作为一个切面,通过某种方式来实现对这些问题的统一处理。

在AOP中,通过切面和切点来定义应用的关注点,而不是通过类和对象来组织代码。切面是定义通用业务逻辑的模块,它可以捕获多个对象的行为,并为其添加一些通用的业务逻辑。 例如,我们可以通过AOP统一实现日志记录,无论哪个模块有日志记录的需求,都可以在一个切面中进行定义。
当我们编写程序的时候,我们往往需要写一些通用的操作,比如记录日志、数据校验、性能监控等等,这些操作涉及多个模块,往往难以直接实现。传统的编程方式(OOP)无法有效处理这种情况,每个模块都需要单独实现这些通用操作,导致代码重复,维护困难。

面向切面编程(AOP)则是一种新的编程方式,它关注的是系统中多个模块共同拥有的特点,将这些共同的特点抽象出来,统一实现,从而减少代码重复和维护难度。例如,我们可以定义一个通用的日志切面,在需要记录日志的地方统一调用,而不是每个模块都单独记录日志,这可以提高程序的可维护性,降低开发和维护的难度。

总而言之,AOP和OOP是两种不同的编程方式,它们本着不同的目标对问题进行不同的解决方案。OOP关注类和对象的封装、继承和多态,而AOP则关注应用横贯多个不同模块的通用逻辑,提高代码重用和可维护性。


 2、分别说明采用oop和aop两种不同的编程思想给业务层加日志的功能的思路

 使用面向对象编程思想(OOP)来给业务层加日志的功能,可以定义一个日志类,然后在业务层中引入该类。在每个需要记录日志的方法中,先创建一个日志实例,在方法执行前和执行后分别将方法名、参数以及返回值等信息记录在日志里,最后将日志写入到文件或者数据库中。这样可以提高代码的可维护性和复用性,方便在不同的地方调用日志。

使用面向切面编程思想(AOP)来给业务层加日志的功能,可以定义一个切面类,然后将其与业务逻辑类进行织入,实现日志的拦截和记录。切面类中可以定义before、after和around类型的通知方法,分别对应方法执行前、执行后以及执行过程中的拦截行为,通过在这些方法中进行日志记录,可以实现给业务层加日志功能的效果。这样可以将日志与业务逻辑解耦,提高了代码的可维护性和方便性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值