IoC(Inversion of Control)内涵解析
来源:互联网 发布:手机淘宝申请免费注册 编辑:程序博客网 时间:2024/06/05 08:43
IoC(Inversion of Control),即所谓的控制反转,从字面上意思来看是控制权的反转,那到底是什么样的控制权的反转呢,下面就以一段简单的代码为例:
public interface Auto {void start();void forward();void back();}
public class Car implements Auto {@Overridepublic void start() {System.out.println("这是一辆小汽车,现在启动");}@Overridepublic void forward() {System.out.println("这是一辆小汽车,现在向前");}@Overridepublic void back() {System.out.println("这是一辆小汽车,现在向后");}}
public class Driver {private Auto auto = new car();void drive(){auto.start();auto.forward();auto.back();}}
当我们新建一个汽车的实例的时候我们使用new方式,如果采用了这种方式,虽然Driver依赖的是一个Auto接口,但依然要通过new的方式生成一个Car的实例,而这个new方法是写死在了Driver代码中,这样Driver就依赖了Car类,这样就使Driver与Auto的具体实现类发生了耦合。那么,如何消除Driver与Auto的具体实现类的耦合呢,这就需要Driver本身不需要关心它所依赖的auto对象具体是什么类型,同时也不需要关心具体对象的实例化过程。这就是IoC容器的作用,在配置文件中,我们既可以配置其依赖对象的bean(从而让IoC容器来代替我们的new方法),也可以组装这个Driver的bean(让IoC容器来为Driver注入auto的实现类的实例,不管是Car还是Trunk)。
话说到这里应该可以做一番总结了,就是IoC容器接管了本来该Driver类自身实现2件事,即依赖类的实例化和依赖关系的建立,从而也真正解除了Driver类与Auto接口实现类之间的耦合。这样,在我们的Driver需要依赖另一个Auto的实例类Truck时我们只需要配置一个对应的bean并通过依赖注入(dependency injection,setter方法或constructor实现)实现Driver的装配而不需要改动Driver代码本身。那么控制反转也就是这两件事的控制权反转到了IoC容器上。
0 0
- IoC(Inversion of Control)内涵解析
- Ioc(Inversion of Control)
- 胡扯IoC(Inversion of Control)
- IoC(Inversion of Control)控制反转
- 控制反转 IOC (Inversion of Control)
- 控制反转IoC(Inversion of Control)
- 关于IOC(Inversion of Control)
- Spring ioc(Inversion of Control )
- 3. Inversion of Control (IoC)
- 自己对IoC(Inversion of Control)的理解
- 简述你对IoC(Inversion of Control)的理解
- 控制反转(Inversion of Control,IoC)简介
- Spring从IOC(Inversion of Control:控制反转)开始
- 对IoC(Inversion of Control)的理解
- IoC(Inversion of Control)反转控制
- 控制反转(Ioc=Inversion of Control)
- Inversion of Control (IoC) and Dependency Injection
- IOC-Inversion of Control, Dependency Injection
- qemu运行pintos
- C++定制operator new,operator delete
- 简单的Makefile文件批处理
- 调侃《Head First设计模式》之迭代器和组合模式(一)
- Linux 基础学习笔记
- IoC(Inversion of Control)内涵解析
- 动态规划(合并类)--石子合并
- 第九周项目3-分数类中的运算符重载(续)
- C++实现仿vector的动态数组
- 系统学习Linux 建议
- Java (引用数据类型)排序
- android View System touch 事件分发流程
- android中延迟执行某个任务
- 第九周项目4-我的向量类