AOP和OOP

什么AOP?面向切面编程(Aspect Oriented Programming)

OOP-- 面向对象编程(Object Oriented Programming)

AOP和OOP一样都是一个编程思想,OOP主要功能封装、继承、多态,AOP它是将系统分解为不同的关注点(不同的切面)。

OOP,我们会根据业务将应用划分为多个不同的业务模块,每个模块的核心功能只为某个核心业务提供服务,如学生宿舍管理系统,学生管理、班级管理、房间管理,分别学生、班级、房间服务的。

除此之外,还会有一些非业务的通用功能,如日志、权限、事务管理等。它们和业务无关,但是几乎所有的模块都会用到它。因此这些通用功能会散布在不同的业务模块中。此时会有很多重复性的代码,不理模块的复用。

为了解决这个问题,AOP(面向切面编程)就出来了,它是把非业务的通用功能抽取出来单独维护,并通过声明的方式(定义切入点)去指定这些功能以何种方式(通知类型)作用在哪里(方法连接点--目标方法),而不是直接在模块的代码中去直接添加。

AOP和OOP的目的是一致的,都是为了减少程序中的重复性代码,让开发者把精力集中于业务逻辑,只是它们的实现方式不同。OOP(婉约派),使用继承和组成方式,为通用功能提高代码复用。AOP(豪放派),通过切入点规定,在某包某类某方法中,去添加同样操作。

AOP不是用来替换OOP的,而是OOP的延伸,用来解决OOP中遇到的问题。

AOP术语

切面:由通知和切入点组成

连接点:应用程序执行过程中插入切面的地点,一般多为方法

通知:切面中非核心业务通用功能的具体实现代码

切入点:定义通知应该在应用程序的什么位置(连接点)

目标对象:被通知的对象

代理:将通知应用到目标对象后创建的对象

织入:将切面应用到目标对象从而创建一个新的代理对象的过程

AOP的关键就在于能够创建切入点,定义切面中的通知在那些连接点织入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值