`

控制反转(IOC)的理解

阅读更多
    控制反转模式是当今J2EE架构中常用到的模式之一,它符合好莱坞法则:不要调用我,我会调用你。在没有运用IOC的时候,我们一般都是通过工厂来管理对象,当我们需要一个对象的时候,我们通过工厂来创建它,这样就造成了业务代码和工厂的耦合,并且更重要的是需要我们自己来管理对象的生命周期,这样非常繁琐,所以如果我们运用IOC的话,不仅可以解除业务代码与工厂的耦合,而且不用我们进行生命周期管理,大大的减少了编码的工作量。如何实现IOC,现在大概有以下两种方式:
     第一:查找实现。此种实现方法需要一个注册表,当我们需要什么对象的时候,我们就去注册表里查找,不需要自己去创建。因为需要的对象是框架或者是容器帮我们管理的,这时就不需要我们来负责对象的生存周期等的问题。所以生存周期管理也就成了一个容器的必备的能力之一。比如EJB,它就是通过JNDI来查找我们需要的对象的。这样虽然使得我们不需要管理对象的生命周期,但是同时我们的业务代码还是和具体的注册表API相耦合,所以此种办法没有完全解耦。为了实现完全的POJO编程模型,需要采用以下的IOC方式(DI)。
     第二:依赖注射(DI),目前比较流行的是此种实现。依赖注射要求我们只需要声明要用到什么样子的对象,然后设置JavaBean的setter方法就OK了,在我们需要用到对象的时候,容器会帮助我们把需要的对象设置进来。或者也可以通过有参构造器来进行注射,通过依赖注射,我们的业务代码就不需要与具体的容器或者是框架耦合,我们可以完全采用POJO的编程模型。因为我们的业务代码没有与任何的容器相耦合,这样就可以使得代码可以在容器内或者容器外都可以运行,从而提高了复用性和可移植性,同时我们的测试也很容易实现。由此可见IOC给我们的开发带来的是革命性的变化。使得我们的业务代码与具体的容器的耦合度降到了最低的同时,也给我们的测试工作带来了便利。
4
4
分享到:
评论
7 楼 xulongfa 2009-02-11  
引用
[img][/img][url][/url][flash=200,200][/flash]
6 楼 狂放不羁 2008-10-31  
iampurse 写道

其实JNDI只是依赖于JDK   而IOC则依赖框架。   我想问你你的IOC怎么移植?   要说移植的话,就只有SOAP勒。    而且IOC的内部实现其实也并没有解耦。   只是我们用起来感觉是解耦的。

不同的框架通过不同的方式实现了IOC,IOC只是给我们应用程序最大化的解耦,无论你用什么IOC容器,应用程序组件之间是最大化解耦的,组件之间都是通过接口通信。不过如果你首先用spring IOC容器组装了你的系统服务的话,那么当你移植到比如piccontainer,那么也许会改变一些东西,因为你spring ioc容器,我一般用setter注入,而piccontainer要constructor来注入。

不管IOC容器内部有没有解耦,IOC的意图是让我们自己写的组件之间解耦。

这是我的理解。
5 楼 iampurse 2008-10-31  
  其实JNDI只是依赖于JDK
  而IOC则依赖框架。
  我想问你你的IOC怎么移植?
  要说移植的话,就只有SOAP勒。
   而且IOC的内部实现其实也并没有解耦。
  只是我们用起来感觉是解耦的。
4 楼 狂放不羁 2008-10-31  
iampurse 写道

你看过IOC的内部实现么? 而且IOC是依赖于框架。



应该说是框架实现IOC模式。比如piccontainer,spring等,都是一个支持IOC的容器。依赖注入,依赖查找都是IOC模式。
3 楼 iampurse 2008-10-31  
你看过IOC的内部实现么?

而且IOC是依赖于框架。
2 楼 chucai 2008-04-08  
我的一些不成熟的意见:
    IOC很强大。但万物有优点,就有缺点。关于依赖注入,有个不好的就是,如果你忘记了注入某个属性,程序是不会提醒你的。所以,我个人觉得,在这方面有注意。
1 楼 422232121 2008-04-08  
我才搞定呢,和我想的差不多吧。

相关推荐

    Android应用开发中控制反转IoC设计模式使用教程

    【Android应用开发中控制反转IoC设计模式使用教程】 IoC(Inversion of Control,控制反转)是一种设计模式,常被称为依赖注入(Dependency Injection,DI)。在Android应用开发中,IoC模式能够显著降低组件之间的...

    学习Spring笔记_IoC(控制反转)简介

    **Spring框架中的IoC(控制反转)概念** 在软件开发中,IoC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理责任从代码中剥离出来,交由一个容器来处理。Spring框架是Java平台上的一个核心...

    springboot通过面向接口编程对控制反转IOC的理解.docx

    在Spring Boot框架中,控制反转(Inversion of Control,简称IOC)是一种重要的设计原则,它将对象的创建和管理权交给容器(在这里是Spring框架),从而解耦了应用的组件。面向接口编程则是另一种核心原则,它提倡...

    Spring IOC 控制反转

    接下来,我们通过一个简单的示例代码来进一步理解Spring IOC控制反转的实现过程: ```java // 定义一个DAO层接口 public interface UserDao { void save(); } // DAO层接口的实现类 public class UserDaoImpl ...

    Spring深入理解控制反转-IOC

    基于annotation注解方式理解SpringIOC控制反转

    Ioc(控制反转)的例子

    "IoC(控制反转)"是软件设计模式中的一个重要概念,它在现代软件开发,特别是.NET框架下的C#编程中占据了核心地位。控制反转的主要思想是将对象之间的依赖关系从代码内部转移到外部容器,从而使代码更加灵活、可...

    Spring控制反转(IoC)的理解

    **Spring控制反转(IoC)理解** Spring框架的核心特性之一是控制反转(Inversion of Control,简称IoC),也常被称为依赖注入(Dependency Injection,简称DI)。IoC是一种设计模式,它将对象的创建和管理从应用代码...

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

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

    浅析springboot通过面向接口编程对控制反转IOC的理解

    浅析SpringBoot通过面向接口编程对控制反转IOC的理解 控制反转(IOC)是一种设计思想,而不是一种技术。它将对象的控制权交给容器,而不是传统的在对象内部直接控制。IOC的关键是要明确“谁控制谁,控制什么,为何...

    轻松理解Java面试和开发中的IoC(控制反转)

    控制反转(IoC)在Java开发中的应用 控制反转(Inversion of Control,英文缩写为IoC)是Java开发中的一种重要的设计模式,它的主要思想是将对象的创建和管理交给容器来处理,而不是在类内部控制。这称为控制反转。...

    helloIoc.zip spring ioc控制反转简单测试代码

    Spring框架的核心特性之一就是依赖注入(Dependency Injection,简称DI),它通过控制反转(Inversion of Control,简称IOC)实现。这个"helloIoc.zip"压缩包包含的是一组用于演示Spring IOC基本概念和使用的测试...

    springIOC控制反转 依赖注入实例

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它改变了传统Java应用程序中对象的创建和管理方式。在传统的程序设计中,我们通常手动创建对象并管理它们之间的依赖关系,而在Spring中,这些...

    IOC控制反转机制的讲解

    IOC(Inversion of Control,控制反转)是一种设计原则,它改变了传统程序设计中对象之间的依赖关系。在没有IOC的情况下,一个对象通常会自行创建或查找它需要协作的对象,这导致了对象间的紧密耦合。然而,IOC通过...

    IoC Spring 控制反转

    在深入了解Spring框架之前,我们首先需要理解“控制反转”(Inversion of Control,简称IoC)的概念。IoC是一种设计原则,旨在减少组件之间的耦合度,提高代码的可维护性和可测试性。在传统的编程模式中,组件或对象...

    c# 依赖注入 控制反转

    #### 一、IoC(控制反转)简介 IoC,即"Inversion of Control"(控制反转),是软件工程领域的一个重要概念,特别是面向对象编程中的一个关键设计原则。从字面上理解,IoC指的是程序运行时控制流的方向发生了“反转...

    Spring框架IoC控制反转.pdf

    【Spring框架IoC控制反转】 一、Spring框架是什么 Spring框架是Java开发中的一款轻量级框架,诞生于2003年,旨在简化企业级应用的开发复杂性。Spring的核心理念包括控制反转(IoC)和面向切面编程(AOP)。作为一...

    在Eclipse RCP中实现控制反转(IoC).doc

    在Eclipse RCP中实现控制反转(IoC)是一种提高应用程序可维护性和可扩展性的重要设计策略。控制反转(Inversion of Control,IoC)和依赖注射(Dependency Injection,DI)是面向对象编程中降低模块间耦合的技术,...

    .net autofac 与IOC控制反转来调用数据库事例

    在本案例中,我们将探讨如何使用Autofac来实现数据库操作的控制反转。 首先,了解Autofac的基本概念。Autofac是一个轻量级的DI库,它允许开发者在运行时动态地组合应用程序组件。通过注册服务(接口或抽象类)和...

    控制反转(IoC)与依赖注入(DI)1

    【控制反转(IoC)与依赖注入(DI)详解】 控制反转(Inversion of Control,简称IoC)是面向对象编程领域的一种设计原则,旨在降低软件组件间的耦合度。在传统的程序设计中,对象A如果依赖于对象B,那么对象A在...

    Spring IOC控制反转 1

    **Spring IOC控制反转详解** 在Java开发中,Spring框架的核心特性之一就是IOC(Inversion of Control,控制反转),它改变了传统...通过阅读《控制反转小例子.doc》文档,你将能更深入地理解这些概念并掌握实践技巧。

Global site tag (gtag.js) - Google Analytics