首页 > 代码库 > IOC设计模式初步了解(day02)

IOC设计模式初步了解(day02)

IOC(Inversion of Control):控制反转。

*其他解释:依赖注入、依赖反转……

设计目标:简化JEE的研发工作,提供IOC容器,控制bean的生成、注入,解耦。

看了网上的一些帖子、介绍,书籍中的一些剖析,都不是很了解IOC这个概念,于是找来这么段代码,直接从代码上去理解了。

interface A{}public class B implements A {}

正常情况下,我们要使用到A接口的实现都是这样:

A a = new B();

但在IOC实现Spring中则是这样:

@Autowiredpublic A a;

也就是说,当你要应用不同的实现类的时候,你只需要去配置xml文件,或者修改@service的bean对象,如:

@servicepublic class B implements A {}

改成

@servicepublic class C implements A {}

而不需要这样子修改:

A a = new C();

 

这里不去探讨Spring是如何实现的,具体涉及到的反射相关名词,如有兴趣,自行学习。

我们只谈论这样子的好处,经常进行Ajax编程的人,或许对这样子的代码并不陌生:

$.post(url, function(data){  // });

这里用到的是回调的设计模式,在java中这样的回调通常会与接口挂钩,即传进去的是一个接口实现类(因为java中的函数实现必须要挂载在对象上,而不像脚本语言可以进行函数式编程),所以前端代码中传递的就仅仅是一个匿名函数了,这样的好处就是当你实际运行的时候才去确定你所需要绑定的方法,而非耦合度高的编译时绑定或者硬编码。

 

实际上这对于Java这种强类型的接口编程语言是相当合适的,至少笔者认为这样可以指导初学者的编程,举个例子,在swing编程中的事件监听你只需要传一个接口实现类(里面对应的方法需要实现)进去即可,而不需要去编写相当复杂的代码逻辑,即把业务逻辑部分的代码抽离出来,让研发人员可以专注在业务逻辑的实现上。Spring很大程度上的一个设计目标就是如此。

IOC设计模式初步了解(day02)