一分钟看懂IoC 原理

2023-11-05

本人的概念总结,一分钟让你懂得Ioc原理

1.1、IoC是什么

  Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:

  ●谁控制谁,控制什么:传统程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

  ●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

 

  

1.2、IoC能做什么

  IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

  其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

  IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

 

 

 

网上的Ioc 资料多如牛毛,在此不一一赘述,附上两篇写的蛮详细的Blog,可自行查看文字描述

https://blog.csdn.net/qq_22654611/article/details/52606960/

https://blog.csdn.net/ivan820819/article/details/79744797

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一分钟看懂IoC 原理 的相关文章

  • 安全防御——APT

    安全防御 APT APT介绍 APT攻击技术 APT攻击方式 APT攻击诱饵种类 APT特征 APT攻击过程 生命周期 第一阶段 扫描探测 第二阶段 工具投送 第三阶段 漏洞利用 第四阶段 木马植入 第五阶段 远程控制 第六阶段 横向渗透
  • Linux内核空间映射到用户空间

    作者 EasyWave 时间 2012 12 26 类别 Linux内核 内核空间映射 声明 转载 请保留链接 注意 如有错误 欢迎指正 这些是我学习的日志文章
  • 基数排序(C语言)

    基数排序 基数排序 Radix sort 是一种非比较型的排序算法 最早用于解决卡片排序的问题 它的工作原理是将待排序的元素拆分为k个关键字 其中k为最大值的位数 从低位开始进行稳定排序 注意 数列中的元素都是非负整数 基数排序是一种稳定的
  • Python爬虫批量下载文献

    最近在看NeurIPS的文章 但是一篇篇下载太繁琐 希望能快速批量下载下来 于是想到了之前一直听说的python爬虫 初次学着弄一下 用到了requests BeautifulSoup urllib request包 先放最终运行的程序 结
  • Proteus8仿真:51单片机IrLink红外发送加接受模块的使用

    51单片机IrLink红外的使用 元器件 原理图部分 代码 单片机1发送main c 单片机2接受main c 工程文件 注意 本篇的密码接受有问题 不够仍然可以使用 想优化可以看我最新文章 最新优化 这个是没有bug的版本 元器件 元器件
  • 缓存篇

    1 springboot自带缓存 step1 开启注解 在application类上加上 EnableCaching注解 step2 在需要加缓存的方法上加上注解 Cacheable 该注解的属性 cacheManager管理多个cache
  • HJ24 合唱队——动态规划

    HJ24 合唱队 解析 这道题可以参考该视频的思路 使用left和right数组记录元素i左边递增的元素个数和右边递减元素的个数 left和right数组的值由前面的状态推出 如果i比前面的某一元素ii大 则left i max left
  • 微信小程序真机调试接口错误怎么解决

    今天项目写完做真机测试的时候遇到了一个问题 就是二级路由在真机测试的时候不能跳转 错误如下 于是去上网找了一下解决方法 大致如下 第一步 找到小程序里面的开发选项 找到服务器域名 获取域名 保存域名 第二步 打开小程序 刷新页面 打开详情
  • Pandas-object字符类型转时间类型to_datetime()函数

    一 pandas中to datetime 函数 可以将指定数据转换为相应格式的时间类型数据 pandas to datetime arg format None unit None 参数 含义 arg 需要转换类型的数据 format 所输
  • AI时代到来,免费ChatGPT在这里

    AI大模型是什么 它指的是参数量巨大的深度学习模型 其参数数量通常达到数十亿乃至数万亿 通过学习海量数据 这些模型不断提升预测能力 在自然语言处理 计算机视觉 自主驾驶等领域取得了重要的突破 AI大模型的定义可根据参数规模进行分类 按照Op
  • python解析含有重复key的json

    python自带的json包能够方便的解析json文本 但是如果json文本中包含重复key的时候 解析的结果就是错误的 如下为例 key 1 key 2 key 3 key2 4 经过解析 结果却如下所示 key 3 key2 4 原因是
  • J-Tech & 开源之夏|什么是比快更快的向量搜索

    J Tech Talk 由 Jina AI 社区为大家带来的技术分享工程师们将深入细节地讲解具体的问题 分享 Jina AI 在开发过程中所积累的经验 本期 J Tech Talk 邀请到了在开源之夏项目中脱颖而出的杨小燕 分享她负责的项目
  • STM32F103 USB OTA升级APP (二)

    接上一篇STM32F103 USB OTA升级BootLoader 一 跳转链接 修改程序启动地址和Flash大小 修改main c代码 include main h include usart h include usb device h
  • java使用AES加密,c++使用crypto++解密

    最近在做一个项目 需要用到加密解密 java端用AES加密了 准备把加好密的数据发送到c 写的服务端 crypto 开源库 搞了几天 从不会到会 配置差点把我搞疯了 太它妈的蛋疼 编译器 vs2017 开源库 crypto 官网 https
  • STM32学习--低功耗

    STM32学习 低功耗 什么是低功耗 低功耗的分类 休眠模式 立即休眠 退出时休眠 停止模式 进入停止模式 待机模式 待机模式进入和退出 什么是低功耗 默认情况下 系统复位或上电复位后 微控制器进入运行模式 在运行模式下 CPU 通过 HC

随机推荐

  • 解决git push代码到github上一直提示输入用户名及密码的问题

    问题提出 我们将github上的工程clone到本地后 修改完代码后想要push到github 但一直会有提示输入用户名及密码 如下图 原因分析 出现这种情况的原因是我们使用了http的方式clone代码到本地 相应的 也是使用http的方
  • 【allegro 17.4软件操作保姆级教程十】文件输出

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 1 1添加光绘层叠 1 1 1添加线路层 1 1 2添加表底阻焊层 1 1 3添加表底钢网层 1 1 4添加表底丝印层 1 1 5添
  • Yarn 和 NPM 国内快速镜像(淘宝镜像)

    Yarn 和 NPM 国内快速镜像 淘宝镜像 如果在前端开发使用 NPM 或者 YARN 下载过程中碰到网速非常慢 可以配置国内 淘宝镜像 来提升下载速度 具体方法如下 NPM 查询当前镜像 npm get registry 设置为淘宝镜像
  • C/C++ socket通信 服务端 客户端相互发送消息(一人一句)

    C C socket通信 服务端 客户端相互发送消息 一人一句 server cpp client cpp 解析如下 server cpp 服务端代码如下 server cpp include
  • SRC漏洞挖掘经验分享

    文件解析造成的XXE 网站存在一个有意思的功能点 通过上传Excel会将内容显示在页面上 也就是说后端会解析Excel Excel是通过XML来存储数据的 也就是说网站解析了XML 那么我们就可以在XML中注入语句来尝试攻击 新建一个 新建
  • SQL Server2012使用教程(图文详情)

    SQL Server2012的安装 https blog csdn net jiachang98 article details 82874358 在所有应用中点击SQL Server Management Studio 进入SQL Ser
  • golang 数据类型转换

    数据类型转换 同底层数据类型转换 比如将 int 类型数据转换成 int8 int16 int32 int64 package main import fmt func main 同底层数据类型之间的转换 定义数字类型变量 var num
  • oracle中的rowid和rownum理解

    rownum Oracle分页查询相较于mysql来说要繁琐得多 需要配合rownum实现 而为什么需要先获取小于某个值的数据后 再获取大于某个值的结果 是因为rownum是一个逻辑伪列 并不会真实存在 每次生成都是在先生成列表数据后 新增
  • Jeff Atwood倾情推荐——程序员必读之书

    英文版 Code Complete 2 中文版 代码大全 第二版 作者 Steve McConnell译者 金戈 汤凌 陈硕 张菲出版社 电子工业出版社出版日期 2007 年8月Jeff Atwood的推荐 Steve McConnell的
  • STM32CubeMX之内部Flash读写

    有时候需要对一些数据进行掉电可存储 一般来说可以把这些数据存储到外部EEPROM或FLASH 如AT24CXX SPI FLASH等 对于一些不需要经常写入的少量数据 可以直接存储到单片机内部FLASH 可以节省成本 前期准备 STM32硬
  • Windows下 VS code +MinGW如何添加安装 pthread.h

    Windows下 VS code MinGW如何添加安装 pthread h 本人墨大学生小白一名 因为专业课中需要用到 pthread h 去编写C语言 网上有很多教程 但我按步骤走后 在编译时依然会出现错误 试了很多种方法 最后使用mi
  • mmdetection1.4训练fasterrcnn

    mmdetection1 4训练fasterrcnn 指定参数文件 urllib error URLError
  • 循环结构中辅助控制break,continue,pass,else

    文章目录 break与continue pass for while循环中的else扩展用法 综合实例 break与continue break语句是结束整个循环的过程 不在判断执行循环的条件是否成立 continue语句只结束本次循环 并
  • 找不到msvcp140.dll无法继续执行代码怎么解决

    msvcp140 dll是Microsoft Visual C 文件中中的一个共享DLL文件 用于执行C 程序的相关运行库 如果计算机上的某个程序缺少msvcp140 dll文件 则该程序将无法正常运行 通常会弹出相关错误提示信息 小编今天
  • 【U盘量产工具】热插拔导致U盘进入写保护——安国主控AU6989SN-GT

    2022 1 20 前言 前两天我爸的车的中控CD机坏了 嫌修车店修太贵了 又不需要升级成触控导航的中控 就想在淘宝上买了一个原厂一模一样的换上 到货了觉得修车店装一下又得几百块 就让我帮他一起装回去了 那东西居然是2011年产的 到现在已
  • linux socat_Linux多用途中继Socat命令教程和示例

    linux socat Linux provides different philosophy and use cases from system point of view socat is very interesting comman
  • 精通SuiteSparse应用与架构01 compile and install

    solve problem libcublas so no such file or directory as cuda10 nvidia put has shiftted the cublas to usrlib x86 64linux
  • 时序预测

    文章目录 效果一览 文章概述 源码设计 参考资料 效果一览 文章概述 时序预测 Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 1 Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 2 单变量时间序列预测 3
  • PID控制器的输入量和输出量的物理关系解释

    PID控制器的输入量和输出量的物理关系解释 其实 PID基本找不到输入与输出的单位关系 但是有很强的数的关系 给定的值与反馈的值还存在偏差时 就会调整输出以达到输入与反馈的平衡 在这里 给定的电流值 反馈的也是电流值 PWM控制的是实际的输
  • 一分钟看懂IoC 原理

    本人的概念总结 一分钟让你懂得Ioc原理 1 1 IoC是什么 Ioc Inversion of Control 即 控制反转 不是什么技术 而是一种设计思想 在开发中 Ioc意味着将你设计好的对象交给容器控制 而不是传统的在你的对象内部直