物联网 > > 物联网问答 > 什么是IOC,IOC的优缺点及IOC的应用

什么是IOC,IOC的优缺点及IOC的应用

来源:https://www.wlworld.com.cn 时间:2024-08-31 编辑:admin 手机版

一、什么是IOC,IOC的优缺点及IOC的应用

IOC,即控制反转(Inversion of Control,英文缩写为IoC),是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。

IOC的优点:实现组件之间的解耦,提高程序的灵活性和可维护性。

IOC的缺点:

1、创建对象的步骤变复杂了,不直观,当然这是对不习惯这种方式的人来说的。

2、因为使用反射来创建对象,所以在效率上会有些损耗。但相对于程序的灵活性和可维护性来说,这点损耗是微不足道的。

3、缺少IDE重构的支持,如果修改了类名,还需到XML文件中手动修改,这似乎是所有XML方式的缺憾所在。

IOC的应用:

IOC模式将耦合代码从程序中移出,放到统一的XML文件中管理。由IOC容器通过配置文件来管理对象的生命周期、依赖关系等,这样就不用重新修改并编译具体的代码,从而实现组件之间的解耦。

二、ioc有两种实现机制 ioc是什么 为什么要ioc

di就是ioc,前者叫依赖注入 dependency injection, 后者是控制反转Inverse of Control, spring的ioc是用aop的方式进行di实现的,往大了方向,模式角度讲,aop是用动态代理模式实现的。 不过你说地也对,可以把ioc认为是在解耦

三、什么是IoC控制反转

控制反转其实就是对象字段或属性赋值publicclassControl{List_data=null;//这部分就是IOC控制器给你new出来赋值,具体是ArrayList还是其他的根据配置来}

四、举例说明IOC

IoC 就是 控制反转的意思

要了解 IoC 就需要先对设计模式有些了解

呵呵 设计模式讲究的一点 就是“先接口(稳定)后实现(善变)”

稳定住稳定的部分,也就是接口,变化善变的部分,也就是实现接口的类。

举个例子吧,假如 Invoker 类包含一个字段为 ChildA a,ChildA 类包含着 CallMe() 方法

那么在Invoker内部,任何一个调用 a.CallMe() 的方法都是在直接调用(控制)着 ChildA 类。这就叫“主动控制”——调用谁的决定权在 Invoker。

因为Invoker直接依赖于ChildA类,而假如有个ChildB类提供相同的方法 CallMe(),但其方法内部实现不同,那么要换掉ChildB类的话,则需要将Invoker类的字段a的声明 ChildA 改为 ChildB...这在设计模式中是不合适的。

设计模式中的做法呢,就是把ChildA ChildB ChildC... 抽象成一个接口,即IChild,同样由Invoker调用方法CallMe()。但此时Invoker的依赖就变了...它依赖的是接口!控制由典型的 实现-实现 变成了实现-接口(或者可以 接口-接口——只需把Invoker类抽象成IInvoker接口即可)。这就叫“反转控制”——调用谁的决定权在 IChild(是啊,由它来决定到底该调用ChildA 还是 ChildB)

这就出来一个问题了,谁来作Invoker.a?是ChildA?ChildB?还是其他集成自IChild的类?这就是IoC要考虑的问题了~~

五、IOC的意思

IOC

1.Input /Output Channel [Control] 输入/输出通道[控制];

2.Input/Output Controller [Converter] 输入/输出控制器[转换器];

3.Intergovernmental Oceanographic Commission 政府间海洋学委员会(联合国UNESCO);

4.International Olympic Committee 国际奥林匹克委员会;

5.International Oceanographic Commission 国际海洋学委员会

一般指第4个

最近更新

物联网问答排行榜精选