`
phpxiaoxin
  • 浏览: 251224 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IoC是什么

阅读更多

IoC是什么?Inversion of Control,即反转控制,或许说为依赖注入更为合适。IoC就是IoC,不是什么技术,与GoF一样,是一种设计模式。
  Interface Driven Design接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执 行:AInterface a = new AInterfaceImp(); 这样一来,耦合关系就产生了,如:
  Class A{
  AInterface a;
  A(){}
  aMethod(){
  a = new AInterfaceImp();
  }
  }
  ClassA与AInterfaceImp就是依赖关系,如果想使用AInterface的另外一个实现就需要更改代码了。当然我们可以建立一个Factory来根据条件生成想要的AInterface的具体实现,即:
  InterfaceImplFactory{
  AInterface create(Object condition){
  if(condition = condA){
  return new AInterfaceImpA();
  }elseif(condition = condB){
  return new AInterfaceImpB();
  }else{
  return new AInterfaceImp();
  }
  }
  }
  表 面上是在一定程度上缓解了以上问题,但实质上这种代码耦合并没有改变。通过IoC模式可以彻底解决这种耦合,它把耦合从代码中移出去,放到统一的XML文 件中,通过一个容器在需要的时候把这个依赖关系形成,即把需要的接口实现注入到需要它的类中,这可能就是“依赖注入”说法的来源了。
  IOC模式,系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实 际的应用程序代码分开。其中一个特点就是通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
  当前比较知名的IOC容器有:Pico Container、Avalon 、Spring、JBoss、HiveMind、EJB等。
  在上面的几个IOC容器中,轻量级的有Pico Container、Avalon、Spring、HiveMind等,超重量级的有EJB,而半轻半重的有容器有JBoss,Jdon等。
  可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java 的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是 把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。
  IoC中最基本的Java技术就是“反射”编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象 在生成时才决定要生成哪一种对象。反射的应用是很广泛的,象Hibernate、String中都是用“反射”做为最基本的技术手段。
  在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为什么反射技术没有普通应用开来的原因。但经SUN改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。
  IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCIS硬盘了)。
  IoC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象 生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3) 缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。

分享到:
评论

相关推荐

    pring中ioc是什么共15页.pdf.zip

    标题中的“Spring中IOC是什么”指的是Spring框架中的一个重要概念——控制反转(Inversion of Control,简称IOC)。在Spring框架中,IOC是核心特性之一,它改变了传统Java应用程序中对象依赖的管理方式。本文将深入...

    什么是Ioc和DI

    ### 什么是控制反转(IoC)与依赖注入(DI) #### 控制反转(IoC) 控制反转(Inversion of Control,简称IoC)是软件工程领域的一个设计模式,主要用于简化对象之间的依赖关系管理。在传统的面向对象编程中,对象间的...

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

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

    spring中ioc是什么

    "Spring 中的 IoC" IoC 是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。它是 Spring 框架的核心机制之一,通过将对象的创建、装配和生命周期管理交由容器来处理,...

    Spring中IoC优点与缺点解析

    Spring 中 IoC 优点与缺点解析 IoC(Inversion of Control)是 Spring 框架中的一种设计模式,它的主要思想是将对象的创建和管理交给容器,从而解耦合对象之间的依赖关系。今天,我们将详细解析 IoC 的优点和缺点。 ...

    springIoc实现原理

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

    自己实现ioc实例demo

    首先,让我们了解什么是依赖注入。在传统的编程中,一个类通常会自行创建它需要的对象,这导致了类与对象的紧密耦合。而在依赖注入模式中,对象的创建和管理交给了外部容器,类不再负责创建依赖的对象,而是由容器在...

    雷赛IOC0640.rar

    标题中的“雷赛IOC0640.rar”指的是雷赛智能公司的一款名为IOC0640的工业控制产品,该产品通常用于自动化控制系统中,提供高效、稳定的输入/输出(I/O)管理。这个压缩包可能包含了关于该产品的详细资料和技术文档。...

    IoC对象实例IoC对象实例

    IoC(Inversion of Control,控制反转)是一种设计模式,主要应用于软件开发中,尤其是在使用面向对象编程语言如C#时。控制反转的核心思想是将对象的创建和管理权交给一个外部容器,而不是由对象自身负责。这样可以...

    IoC 依赖注入 技术总结

    "IoC 依赖注入 技术总结" IoC 依赖注入技术是软件设计中的一种重要技术,旨在解决软件系统中的耦合问题。该技术的核心思想是将被调用构件实例化,并注入到调用构件之中,以实现软件系统的高内聚、低耦合。IoC 依赖...

    图片转IOC图标工具

    "图片转IOC图标工具"正是一款专为开发者设计的实用工具,旨在帮助他们将普通的图片转换为适用于iOS平台的.IOC图标格式。 .IOC(Image Asset Catalog)是苹果iOS开发中的图像资源格式,主要用于存储不同尺寸和状态的...

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

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

    IOC练习事列

    **IOC(Inversion of Control)**,即控制反转,是一种设计模式,它的核心思想是将对象的创建和依赖关系的管理从应用代码中解耦出来,交给一个专门的容器来处理。这种模式使得代码更加灵活,降低了模块间的耦合度,...

    JavaEE Spring IoC入门

    JavaEE Spring IoC(Inversion of Control,控制反转)是企业级应用开发的重要技术,它极大地简化了Java应用程序的构建和维护。Spring框架的核心特性就是IoC,它通过管理对象的生命周期和对象间的依赖关系,使得...

    IoC小例子(了解一下IoC设计模式入门)

    IoC通过将对象的创建和管理分离,使得类只需要声明它依赖的对象,具体的实现则由IoC容器来完成,从而实现了对象的解耦。 IoC设计模式的实现通常依赖于容器,如Spring框架在Java中就是一个著名的IoC容器。开发者可以...

    IOC模式 c#经典例子

    IOC(Inversion of Control,控制反转)模式是一种软件设计原则,它在面向对象编程中用于解耦组件之间的依赖关系。C#中实现IOC的一种常见方式是通过依赖注入(Dependency Injection,DI)。在这个“IOC模式 c#经典...

    经典ioc图标集合包

    【标题】:“经典ioc图标集合包” 在软件开发领域,特别是在UI设计和用户界面构建中,图标扮演着至关重要的角色。这里的"经典ioc图标集合包"是一个包含多种IOC(Inversion of Control,控制反转)相关的图标资源的...

    iocdemo.rar

    在本示例"iocdemo.rar"中,我们将探讨如何模仿Spring的IoC原理,通过XML配置和注解两种方式进行Bean的管理。 **控制反转(IoC)** IoC意味着应用程序的控制权由传统的程序流程控制转向了外部容器,即Spring框架。在...

Global site tag (gtag.js) - Google Analytics