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

Inversion of Control(IoC)控制反转

    博客分类:
  • C#
 
阅读更多

先概括一下Inversion of Control控制反转:是一种设计模式,在依赖关系上进行倒转。具体的体现有“应用程序不应依赖于容器,而是容器服务于应用程序”。

 

根据Martin Fowler的理解,IoC其实就是框架(framework)和库(library)的区别。库实际意义上就是一系列可用的方法函数,而框架则定义了一些设计模式,比如有如下的ruby代码

  #ruby
  puts 'What is your name?'
  name = gets
  process_name(name)
  puts 'What is your quest?'
  quest = gets
  process_quest(quest)

在这里,控制是在这段主程序代码里面进行的(程序员的这段程序拥有代码的控制权),什么时候问问题,什么时候输入,都是由程序员写的这段程序来决定的。而看下面一段代码

  require 'tk'
  root = TkRoot.new()
  name_label = TkLabel.new() {text "What is Your Name?"}
  name_label.pack
  name = TkEntry.new(root).pack
  name.bind("FocusOut") {process_name(name)}
  quest_label = TkLabel.new() {text "What is Your Quest?"}
  quest_label.pack
  quest = TkEntry.new(root).pack
  quest.bind("FocusOut") {process_quest(quest)}
  Tk.mainloop()

这里,框架提供了bind的接口,让程序员把方法调用传给框架,而具体何时调用,是由框架来通知程序的。这样一来,其实就是对于程序控制的反转。

在其他例子里面,比如C#的按钮,可以让程序员注册回调函数监听事件,在触发事件(比如按钮被点击)的时候,被注册的回调函数就会被调用,在这个意义理解,程序代码从“主动”变成了“被动”。这种IoC的特性,其实也是框架提供的设计模式。

 

Martin Fowler关于IoC的文章:

http://martinfowler.com/bliki/InversionOfControl.html

分享到:
评论

相关推荐

    Spring IOC 控制反转

    它通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect Oriented Programming, AOP)等特性实现了对应用程序的解耦,并通过IOC(Inversion of Control)控制反转来简化配置和管理。 #### 二、Spring ...

    IOC控制反转代码,bilibili配套文件

    IOC控制反转代码,bilibili配套文件 IOC(Inversion of Control,控制反转)是 Spring 框架的核心机制之一,它是一个用于创建和管理对象的容器。控制反转是将对象的创建进行反转,常规情况下,对象都是开发者手动...

    spring技术--IOC控制反转课件.ppt

    **Spring技术--IOC控制反转** 在Java开发领域,Spring框架以其强大的功能和广泛的应用而闻名。其中,IOC(Inversion of Control,控制反转)是Spring的核心特性之一,它改变了传统对象创建和管理的方式,实现了依赖...

    IOC(inversion of control)

    IOC,即Inversion of Control,中文常被翻译为“控制反转”,是面向对象编程领域中的一个设计模式,尤其在Spring框架中广泛应用。控制反转是一种设计原则,它将对象的创建和组装过程从代码中分离出来,交给容器来...

    IOC控制反转机制的讲解

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

    Inversion of Control Containers and the Dependency Injection pattern.docx

    这些容器背后的核心技术通常被统称为“控制反转”(Inversion of Control, IoC)。本文将深入探讨这一模式的工作原理,并特别关注依赖注入(Dependency Injection, DI)这一更为具体的形式。此外,我们还将对比依赖注入...

    Spring框架IoC控制反转.pdf

    IoC,即Inversion of Control,控制反转,是Spring框架的核心特性之一。传统的程序设计中,对象的创建和依赖关系的建立通常由对象自身负责。但在IoC模式下,这些控制权被转移到了外部容器,即Spring容器。容器负责...

    springIOC控制反转 依赖注入实例

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

    IOC控制反转在代码中体现.

    ### IOC控制反转在代码中的体现 #### 一、IOC(Inversion of Control)概念解析 IOC,即控制反转,是一种设计思想,在Java开发领域中,它主要被用来消除程序之间的依赖性,使得类的设计更加灵活。传统的编程模式下...

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

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

    Spring IOC控制反转 1

    **Spring IOC控制反转详解** 在Java开发中,Spring框架的核心特性之一就是IOC(Inversion of Control,控制反转),它改变了传统程序设计中的对象依赖管理方式,使得开发者可以更专注于业务逻辑,而不是对象的创建...

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

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

    控制反轉(Inversion of Control)

    **控制反转(Inversion of Control, IOC)**是软件设计中的一个重要概念,它在近年来的系统开发模式中占据了显著地位,特别是在面向对象编程领域。控制反转的核心思想是将原本由程序内部控制的流程或者对象创建过程...

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

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

    IOC控制反转学习文档

    ### IOC控制反转学习文档 #### 一、控制反转(IOC)概述 控制反转(Inversion of Control,简称IOC),是Spring框架的核心概念之一。它通过管理对象间的依赖关系,实现了对象的解耦,使得代码更加灵活且易于维护。在...

    Spring中使用Ioc控制反转

    ### Spring框架中的IoC控制反转详解 #### 一、IoC概述 控制反转(Inversion of Control,简称IoC)是一种设计思想,在Spring框架中,它主要用来解决对象依赖问题。传统的面向对象编程中,对象之间的依赖关系由对象...

    IOC控制反转&DI依赖注入

    在软件开发领域,IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是两种重要的设计模式,特别是在Java和Spring框架中被广泛使用。这些概念有助于提高代码的可测试性、可维护性和模块...

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

    .NET框架中的Autofac是一个流行的依赖注入(DI)容器,它实现了Inversion of Control(IoC)设计模式。IoC是一种编程范式,通过将对象的创建和管理职责从对象自身转移到外部容器,使得代码更加模块化,更易于测试和...

    Java仿Spring框架IOC控制反转利用反射简单实现(源码)

    Java中的控制反转(IOC,Inversion of Control)和Spring框架是现代企业级应用开发的核心概念。IOC使得应用程序的组件之间解耦,提高了代码的可测试性和可维护性。本篇文章将详细探讨如何通过反射机制来实现一个简单...

    IoC Spring 控制反转

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

Global site tag (gtag.js) - Google Analytics