浅谈AOP和IOC的个人理解

AOP:在说AOP的时候,不免想到另外一个OOP,即:面向对象。

OOP是我们初学java的时候所接触的概念。

它强调的是对象。比如,在设计一个业务模块的功能方法时,我们会去分析,这个业务逻辑中所参与的角色对象,最后分别去创建对象,进行编程。

而AOP,它的主要思想是代码的复用,以及增强,但依然保留OOP的特性。

只是在OOP的基础上,实现了对代码的重用,减少了代码的冗余。

比如:我们有两个业务,一个是支付,一个是订单。都要在这其中添加打印日志的功能,如果按照OOP的思想,则都要写一个打印日志的功能代码,这样代码就比较重复冗余了。而采用AOP的话,我们只要写一个打印日志功能的代码,封装成切面,然后把它注入的对应业务对象中就可以实现了打印日志了,不用重复写代码。

在代码增强方面:比如,某些业务代码,没有事务处理,或者打印日志。但是只要注入了该切面,就可以在代码前后,自动的实现事务处理或打印日志。

IOC:控制反转,重点:对象创建的控制权反转,由主动变为被动,自主权不在自己手里了,在第三方ioc容器中。

ico容器,实际上是一个key-value的map,里面存的是各种对象:配置文件中的bean标签,注解:@controller,@service等等spring注解标注的类。(使用反射创建对象放入map中。)

比如:两个对象A,B,存在依赖关系

在A代码中,到某个节点需要B对象时,如果没有ioc,那么就要在A代码中自己创建B对象或者使用存在的B对象,这个自主权都是在自己手里。现在有了ioc,就会自动把B对象注入给A,不要自己去创建或者获取。而且这个时候,A,B都在IOC容器中,不存在任何依赖关系。

所以IOC一个很突出的特性:解耦合

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值