谈谈IOC容器和AOP编程

文章讲述了Java发展中解耦的概念,从new创建对象到使用接口和抽象类,再到Spring框架带来的IOC(控制反转)和DI(依赖注入)如何降低耦合度。AOP(面向切面编程)则是在不修改源码的情况下添加额外功能,其底层利用了代理模式。
摘要由CSDN通过智能技术生成

Java发展的路途中,由刚开始的使用new创建对象,到使用抽象类,接口进行解耦,又到了提问时刻,什么是耦合度?

对于这个对象的关联和依赖关系,例如:

当一个对象要使用,但是,它并不能直接拿来用,有一个或者多个前提,必须给定别的 方法,或者对象。

JAVA刚开始就是使用接口来解决小部分耦合度,又名多态。

当spring出来的时候,是对JAVA的跨越式的进步,使用了IOC控制反转:

他的主要思想是:

将对象交给一个IOC容器来做,程序员只负责调用,这就是为什么要说是控制反转,我们不再创建对象,只负责调用,以前是程序员new,现在反过来了。

既然ioc负责创建对象,那么有参数、成员的时候应该如何赋值呢?

spring定义了DI注入,什么叫注入?这里就要谈到JAVA类的创建过程:

类在创建时,会走一步叫做类加载器,加载的过程中就会创建一个Class类,里面就包含了这个类的所有元素。一个对的创建有四种方式:new、反序列化、反射、克隆

这里ioc底层的Di注入就是使用了反射机制,获得到元素后,进行赋值。

AOP面向切面编程:

聊到这个,我们任然要知道接口,AOP的底层用到了代理模式 。而代理模式和接口的思想很接近,代理模式是:

小明要去租房子,但是找不到房源(房东),

所以只能被宰一刀,去找中介,

中介负责带着小明去看房,签合同,还有给差价!

以上故事就是代理模式

大家仔细想,中介的:看房、签合同是不是房东也可以做,但是房东不会赚差价。

所以代理模式就是:通过代理(接口实现)这个类,拥有父类的方法,但是自己还加了一些自己的方法。任然使用的是接口的思想。最重要的是中介没用动房东的利益(也就是编程中的源码

聊回来,我们继续来看AOP:

现在是不是很清楚,AOP就是在不动业务源码的情况下,加一些奇奇怪怪的业务。 

如果用这张图,把编写业务看做纵向线段,那么AOP就是在这条线上加一些东西:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值