IOC是什么 ?

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:  
●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。  
●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

IOC能做什么?

IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。  
其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。 IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

何为IOC?IOC能做什么?相关推荐

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

    更多免费教学文章请关注这里 IOC,即控制反转(Inversion of Control,英文缩写为IoC),是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核 ...

  2. 面试被问烂的 Spring IOC(求求你别再问了)

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 作者:莫那·鲁道 链接:http://thinkinjava.cn 广义的 IOC IoC(Inv ...

  3. 谈谈对Spring IOC的理解

    2019独角兽企业重金招聘Python工程师标准>>> 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人 ...

  4. spring ioc原理(看完后大家可以自己写一个spring)

    在学习spring的时候,最常听到的词应该就是IOC和AOP了,下面,我从我的角度再次理解一下Spring里的IOC和AOP. IOC简介 IoC(InversionofControl):IoC就是应 ...

  5. Spring的IOC原理[通俗解释一下]

    2019独角兽企业重金招聘Python工程师标准>>> 本文系转载,个人认为,这篇文章对IOC原理讲的比较清楚,通俗易懂,值得一看. 原文地址:http://blog.csdn.ne ...

  6. Castle IOC容器快速入门

    摘要:IOC模式是近年来非常流行的一种模式,相信大家都不陌生了,如果你还不是很熟悉的话,可以看看Martin Fowler大师的文章http://martinfowler.com/articles/i ...

  7. IoC容器Autofac(3) - 理解Autofac原理,我实现的部分Autofac功能(附源码)

    上篇文章中,举了一个Autofac的简单例子,园友eflay反应: "虽然对autofac架构原理还是完全不懂,不过基本是明白ioc的用途了,会从已注册的类中找出符合接口的类来调用构造函数进 ...

  8. 彻底理解Spring IOC和DI

    目录 前言 1. 分享Iteye的开涛对Ioc的精彩讲解 1.1 IoC是什么 1.2 IoC能做什么 1.3 IoC和DI 2. 分享Bromon的blog上对IoC与DI浅显易懂的讲解 2.1 I ...

  9. Spring:源码解读Spring IOC原理

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是Ioc/DI? IOC容器:主要是完成了 完成对象的创建和依赖的管理注入等. 先从我们自己设计这样一个视角来考虑: ...

  10. Spring核心(ioc控制反转)

     IoC,Inversion Of Control 即控制反转,由容器来管理业务对象之间的依赖关系,而非传统方式中的由代码来管理. 其本质.即将控制权由应用程序代码转到了外部容器,控制权的转移就是 ...

最新文章

  1. python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
  2. 三次样条插值Python实现
  3. MySQL的sql_mode解析与设置
  4. java代码=--数组复制
  5. h5 video 手机 显示第一帧_【图像处理二】HDMI显示(一)
  6. Centos Ubuntu防爆破ssh脚本
  7. mybatis list为入参_Mybatis进阶学习
  8. Spring Boot入门篇-默认安全配置
  9. 量化交易软件 python_我用Python做了个量化交易工具!
  10. Hybrid App基础知识
  11. Solidity语言详解——view和pure函数的使用区别
  12. 爬虫--Scrapy之Downloader Middleware
  13. 组策略怎么禁用计算机管理,如何打开管理员禁用的组策略?
  14. 使用echart的小指南
  15. html页面上传文件mui,mui 文件上传注意问题
  16. 2022-08-23:以下go语言代码输出什么?A:map[baz:2 foo:0];B:map[bar:1 baz:2];C:map[baz:2];D:不确定。 package main impo
  17. 关于计算机的英语作文初中,关于电脑的英语作文
  18. 人体存在感应雷达应用,智能马桶自动响应,低功耗雷达感应模块
  19. ML - Regression
  20. 深圳随手记(随手科技)面经(offer)

热门文章

  1. word2003 /2007 添加无格式粘贴快捷键
  2. 交换机设置巨帧模式,转发大包数据
  3. 《数字短片创作(修订版)》——运用数字工具进行电影创作
  4. 模拟IIC的时钟延展问题(Clock Stretching)
  5. CSS自动换行、强制不换行、强制断行、超出显示省略号
  6. 数学公式推导_梯度_gradient
  7. Qt Modbus CRC ccsds校验 异或校验 数据显示 分割显示
  8. 集电极开路输出、开漏输出、推挽输出
  9. 领先租车行业,神州租车探索长期主义高质量发展
  10. php计算当前时间到下个月的剩余天数