当前位置: 首页 > news >正文

【GoF 23 概念理解】IoC/DI(控制反转/依赖注入)

搞清楚以下几个问题你就明白什么是 IoC/DI 了:

  1. 参与者都有谁?
  2. 依赖:谁依赖于谁?为什么要依赖?
  3. 注入:谁注入于谁?到底注入什么?
  4. 控制反转:谁控制谁?控制什么?为何叫反转(有反转就有正转了)?

解答

  1. 参与者都有谁:一般有三个参与者:对象、资源、IoC/DI 容器。(资源:对象里使用的非对象内部的成员)
  2. 谁依赖于谁:对象依赖于 IoC/DI 容器。
  3. 为什么要依赖:对象需要容器来提供所需的资源。
  4. 谁注入于谁,注入什么:容器将外部资源注入到对象。
  5. 谁控制谁,控制什么:容器控制对象实例的创建。
  6. 为何叫反转:反转是相对于正向而言的,如果要在类A里面使用类B,你会怎么做呢?
    • 正向:在类A里边直接创建类B的实例对象。
    • 反转:类A不再直接创建类B的实例,而是通过容器来创建,然后容器再将类B的实例注入到类A中。

小结

如果你真的理解了上面几个问题,想必你已经明白了什么是 IoC/DI 了。

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

http://www.lryc.cn/news/38743.html

相关文章:

  • stm32外设-GPIO
  • AfxMessageBox 自定义封装
  • 登入vCenter显示503,证书过期解决办法
  • 设计模式(十九)----行为型模式之命令模式
  • 【数据库】数据库基础架构
  • English Learning - L2 语音作业打卡 双元音 [ɔɪ] [ɪə] Day16 2023.3.8 周三
  • C++语法规则4(C++面向对象)
  • 【Spring 深入学习】AOP的前世今生之后续
  • 软考高项——配置管理
  • 网站SEO优化,网站TDK三大标签SEO优化,LOGO SEO优化
  • select查询语句
  • 没有对象感,沟通太费劲
  • 智能优化算法之遗传算法
  • 【rabbitmq 实现延迟消息-插件版本安装(docker环境)】
  • 【大数据】HDFS管理员 HaAdmin 集群高可用命令详细使用说明
  • 京区航天研究所 哪些比较好的研究所?
  • Nacos配置拉取及配置动态刷新原理【源码阅读】
  • 第十届省赛——9等差数列(集合做法)
  • 《数据分析-JiMuReport03》JiMuReport报表设计入门介绍-新建报表
  • 从功能测试进阶自动化测试,爆肝7天整理出这一份超全学习指南【附网盘资源】
  • CNN神经网络——手写体识别
  • python调试模块ipdb
  • 【数据库】聊聊MySQL的日志,binlog、undo log、redo log
  • aws dynamodb java低等级api和高级客户端api的使用
  • Kafka中那些巧妙的设计
  • 《JavaEE》进程和线程的区别和联系
  • Matlab生成sinc信号
  • 进程与线程区别与联系
  • 使用vbscript.regexp实现VBA代码格式化
  • 选择结构习题:百分值转换成其相应的等级