简单介绍ioc和aop的理解

本文介绍了InversionofControl(IOC)和Aspect-OrientedProgramming(AOP)的设计模式,强调了它们在解耦对象依赖和处理横切关注点中的作用,以及Spring框架在实践中的应用。
摘要由CSDN通过智能技术生成

ioc和aop的理解

IOC (Inversion of Control) 和 AOP (Aspect-Oriented Programming) 都是面向对象编程中常用的设计模式和编程思想。

IOC 是一种设计模式,其核心思想是将对象的创建和依赖关系的管理交给外部容器来处理,而不是由对象自身来创建和管理依赖对象。通过IOC,对象的创建和依赖关系可以使用配置文件或者注解来定义,这样可以实现对象的解耦和灵活性。在实践中,常见的IOC容器包括Spring等。

AOP 是一种编程范式,其主要关注横切关注点(Cross-cutting Concerns)的处理。横切关注点是指那些在应用程序的多个模块中存在的、影响多个模块的功能或逻辑,比如日志记录、事务管理、性能监控等。AOP 的思想是将这些横切关注点从核心业务逻辑中剥离出来,形成一个单独的模块,然后通过切面(Aspect)的方式将其与核心业务逻辑进行关联。在实践中,切面可以通过注解或者配置文件的方式定义,常见的AOP框架包括Spring AOP等。

总结来说,IOC 关注对象的依赖关系的管理和解耦,而AOP 关注横切关注点的处理和核心业务逻辑的解耦。两者结合使用可以实现更加灵活和模块化的程序设计。

1.1   IOC的概念与原理

IOC,即控制反转,把对象的创建、初始化、销毁交给 Spring 来管理,而不是由开发者控制,实现控制反转。IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂(BeanFactory 接口)。IOC的原理是基于xml解析、工厂设计模式、反射实现的。使用IOC可以降低代码的耦合度。

这么来说吧,在一个动作或者事件中,比如说,你现在想写字(Action),那么你需要笔,于是乎,你new了一个笔来写字,这里,你用了new笔,你这个动作和笔有了关联,没了笔,你就写不了字,也就是说,你的这个行为依赖于笔了,他们就构成了依赖关系。或者你现在想组装一台电脑(Transaction),那么你就需要显示器、主板、键鼠光驱等对象,这些对象通常是new出来的,new出来的对象和当前(this)对象就有了依赖关系。

spring中对依赖的对象采用注入,这就是常说的依赖注入吧

反转控制嘛
给你个简单的例子:
1、未采用IOC:一个人背着一杆土枪去打鬼子了
2、采用IOC:这个人什么都不带跑到战场上了,然后打电话给他家里说,把枪给我送过来。

2.1   AOP的概念

AOP(面向切面编程),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得
业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
通俗来说,就是不通过修改源代码方式,在主干功能里面添加新功能。

AOP面向切面编程
将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
比如:
很多方法可能会抛异常,你要记录这个异常到日志中去,可以写个拦截器类,在这个类中记录日志,在spring.xml中配置一个对这些要记录日志的方法的aop拦截器
在这个方法执行后调用这个拦截器,记录日志。这样就不用每次抛异常都要手动记录日志。
spring的事务管理用到的就是aop
这样也可以提高程序的内聚性。 

aop方式就理解起来就简单了,其方式很类似j2ee中的filter,就是在程序正常的业务流中间像切面一样插入很多其他需要执行的代码,比如登陆时候在进入登录页面前写入日志,登录以后查看cookie等类似的操作,很常用的,尤其是跟数据库有关的,或者跟支付有关的程序肯定会在每一步前面插入日志,还有某些国际化项目会在每次跳转时候都转换字符集之类
我给你来个权威的,你答到这下面就基本不问了。
IOC(反转控制):对成员变量的赋值的控制权从代码中反转到配置文件中。
AOP:Aspect(切面) Oriented(面向) Programming(编程),面向切面编程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值