`

IOC原理详解

    博客分类:
  • Java
 
阅读更多
引用

1.当不用IOC时:
在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。各个对象就像齿轮,互相协作。各个对象之间的依赖程度很高,耦合度之高。为了解决耦合度高的问题,提出了IOC。
2.当存在IOC时(IOC为Inversion of Control控制反转)
IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦。由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器,所以,IOC容器成了整个系统的关键核心,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用,如果没有这个“粘合剂”,对象与对象之间会彼此失去联系,这就是有人把IOC容器比喻成“粘合剂”的由来。
软件系统在没有引入IOC容器之前,如图1所示,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。
软件系统在引入IOC容器之后,这种情形就完全改变了,如图3所示,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。
另一种说法是依赖注入,所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
3.IOC在现实生活中的类似现象
现在,我们利用电脑主机和USB接口来实现一个任务:从外部USB设备读取一个文件。
电脑主机读取文件的时候,它一点也不会关心USB接口上连接的是什么外部设备,而且它确实也无须知道。它的任务就是读取USB接口,挂接的外部设备只要符合USB接口标准即可。所以,如果我给电脑主机连接上一个U盘,那么主机就从U盘上读取文件;如果我给电脑主机连接上一个外置硬盘,那么电脑主机就从外置硬盘上读取文件。挂接外部设备的权力由我作主,即控制权归我,至于USB接口挂接的是什么设备,电脑主机是决定不了,它只能被动的接受。电脑主机需要外部设备的时候,根本不用它告诉我,我就会主动帮它挂上它想要的外部设备,你看我的服务是多么的到位。这就是我们生活中常见的一个依赖注入的例子。在这个过程中,我就起到了IOC容器的作用。
对象A依赖于对象B,当对象 A需要用到对象B的时候,IOC容器就会立即创建一个对象B送给对象A。IOC容器就是一个对象制造工厂,你需要什么,它会给你送去,你直接使用就行了,而再也不用去关心你所用的东西是如何制成的,也不用关心最后是怎么被销毁的,这一切全部由IOC容器包办。
4.IOC的好处:
第一、USB设备作为电脑主机的外部设备,在插入主机之前,与电脑主机没有任何的关系,只有被我们连接在一起之后,两者才发生联系,具有相关性。所以,无论两者中的任何一方出现什么的问题,都不会影响另一方的运行。这种特性体现在软件工程中,就是可维护性比较好,非常便于进行单元测试,
第二、USB设备和电脑主机的之间无关性,还带来了另外一个好处,生产USB设备的厂商和生产电脑主机的厂商完全可以是互不相干的人,各干各事,他们之间唯一需要遵守的就是USB接口标准。
第三、同一个USB外部设备可以插接到任何支持USB的设备,可以插接到电脑主机,也可以插接到DV机,USB外部设备可以被反复利用。在软件工程中,这种特性就是可复用性好。
第四、同USB外部设备一样,模块具有热插拔特性。IOC生成对象的方式转为外置方式,也就是把对象生成放在配置文件里进行定义,这样,当我们更换一个实现子类将会变得很简单,只要修改配置文件就可以了,完全具有热插拨的特性。
5.IOC体现的优势
IOC中最基本的技术就是“反射(Reflection)”编程,有关反射的概念和用法,大家应该都很清楚,通俗来讲就是根据给出的类名(字符串方式)来动态地生成对象。
我们可以把IOC容器的工作模式看做是工厂模式的升华,可以把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言的的反射编程,根据配置文件中给出的类名生成相应的对象。从实现来看,IOC是把以前在工厂方法里写死的对象生成代码,改变为由配置文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。
6.使用IOC的缺点
第一,凭空多一道手续,刚开始用的时候变得不是那么直观
第二,IOC容器生成对象采用的是反射机制,在运行效率上有一定损耗
第三,具体到IOC框架产品,需要大量的配置工作,对于小项目而言,增加工作成本。
  • 大小: 64.5 KB
  • 大小: 51.3 KB
  • 大小: 34.2 KB
分享到:
评论

相关推荐

    Spring IOC原理详解

    Spring IOC原理详解 Spring IOC(Inversion of Control,控制反转)是 Spring 框架的核心概念,它解决了对象之间的耦合问题,实现了松耦合编程。IOC 的思想是,Spring 容器来实现对象之间的创建、协调工作,而不是...

    简单实现Spring的IOC原理详解

    简单实现Spring的IOC原理详解 Spring IOC(Inversion of Control,控制反转)是一种软件设计模式,它将对象的创建和管理交给容器,实现了对象之间的解耦合。Spring IOC容器是Spring框架的核心,用于管理应用程序中...

    Spring的IOC原理

    **Spring的IOC原理详解** **一、IoC理论背景** 在面向对象的软件设计中,对象间的耦合是不可避免的,它们通过相互合作实现业务逻辑。这种耦合就像机械手表中的齿轮,彼此啮合共同完成任务。随着软件系统规模的扩大...

    ioc原理,简单实现BufferKnife

    **IOC原理详解与BufferKnife简单实现** IOC,全称Inversion of Control,即“控制反转”,是面向对象编程中的一种设计原则,它将原本由程序内部控制的对象创建和管理权交给了外部容器,使得程序的组件之间解耦,...

    IOC的原理以及自定义使用

    **IOC原理详解:** IOC的核心思想是反转对象的控制权,传统的程序设计中,我们通常在类内部创建需要的对象,而IOC则是通过容器来创建并管理这些对象。当类A需要使用类B时,不再由类A直接创建类B的实例,而是声明对类...

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程.doc

    Spring 框架系列(7)- Spring IOC 实现原理详解之 IOC 初始化流程 本文将详细解释 Spring 框架中的 IOC(Inversion of Control,控制反转)实现原理之 IOC 初始化流程。IOC 是一种软件设计模式,用于将软件系统中...

    IOC框架详解

    【IOC框架详解】 IOC(Inversion of Control)框架是一种软件设计模式,主要目的是为了降低对象间的耦合度,实现更好的可扩展性和可维护性。在传统的面向对象编程中,对象通常自行创建和管理它们所依赖的其他对象,...

    IOC详解IOC详解IOC详解IOC详解

    控制反转(IOC,Inversion of Control)是一种设计模式,它在软件工程中被广泛应用,特别是在Java开发中。IoC的核心思想是将对象的创建和管理权交给一个外部容器,而不是让对象自行创建和管理依赖。这有助于降低耦合...

    Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计.doc

    Spring 框架的IoC(Inversion of Control,控制反转)实现原理是其核心特性之一,它使得组件之间的依赖关系不再由代码直接管理,而是交由容器负责。本篇文章将详细探讨Spring IoC的体系结构设计,以及如何实现这些...

    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc

    Spring 框架系列(8)- Spring IOC 实现原理详解之 Bean 实例化(生命周期、循环依赖等) 本文主要研究 Spring 框架中 Bean 的实例化过程,包括 Bean 的生命周期和循环依赖问题的解决方案。在 Spring 框架中,Bean ...

    Spring_IOC详解.pdf

    ### Spring_IOC详解:深入探索Spring框架的IOC容器原理 #### 引言 Spring框架作为Java企业级应用开发的基石,其核心组件之一便是IOC(Inverse of Control)容器。IOC容器负责管理应用程序中的对象及其依赖关系,...

    Spring IoC功能例子详解.docx

    Spring 框架中的IoC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理权从代码本身转移到一个外部容器,即Spring的...在实际开发中,理解并熟练运用IoC原理能够帮助我们编写出更高质量的代码。

    spring mvc案例+配置+原理详解+架包

    2. **依赖注入(DI)**:通过IOC容器管理Bean及其依赖,实现松耦合。 3. **模型绑定**:自动将请求参数与控制器方法参数进行映射。 4. **异常处理**:自定义异常处理器,统一处理应用中抛出的异常。 5. **数据验证**...

    Spring IOC和aop的原理及实例详解

    Spring IOC和AOP的原理及实例详解 在软件开发中,控制反转(IOC)和面向切面编程(AOP)是两种非常重要的设计模式。Spring框架正是基于这两种模式的思想设计的。下面我们将详细介绍Spring IOC和AOP的原理及实例详解...

    IOC和AOP深刻理解基础代码测试

    对于初学者来说,通过动手实践这些基础测试项目,可以更直观地理解控制反转和面向切面编程的原理。 例如,你可以看到如何使用`@Autowired`注解进行自动装配,以及如何使用`@Component`、`@Service`、`@Repository`...

    poco capsule ioc框架

    ### Poco Capsule IoC框架详解 #### 一、引言 ##### 1.1 IoC的概念及其重要性 在软件开发过程中,特别是在面向对象编程领域,降低代码间的耦合度一直是开发者追求的目标之一。而Inversion of Control(IoC,控制...

    Spring 详解

    Spring IOC aop 原理详解

Global site tag (gtag.js) - Google Analytics