Spring的IOC和工厂模式的区别

IOC是使用了反射的技术来动态的生成对象

工厂模式的对象生成是提前在工厂类中定死的

IOC更加灵活

IoC——Inversion of Control 控制反转

DI——Dependency Injection 依赖注入

1:如何理解IoC/DI
要想理解上面两个概念,就必须搞清楚如下的问题:

  • 参与者都有谁?
  • 依赖:谁依赖于谁?为什么需要依赖?
  • 注入:谁注入于谁?到底注入什么?
  • 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)?
  • 依赖注入和控制反转是同一概念吗?

下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。
(1)参与者都有谁:

一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。
又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。

(2)谁依赖于谁:

当然是某个对象依赖于IoC/DI的容器
(3)为什么需要依赖:

对象需要IoC/DI的容器来提供对象需要的外部资源
(4)谁注入于谁:

很明显是IoC/DI的容器 注入 某个对象
(5)到底注入什么:

就是注入某个对象所需要的外部资源
(6)谁控制谁:

当然是IoC/DI的容器来控制对象了
(7)控制什么:

主要是控制对象实例的创建
(8)为何叫反转:

反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。

IOC和工厂模式的区别相关推荐

  1. 设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)

    建造者模式 建造者模式的概念 Builder 模式也叫建造者模式或者生成器模式,是由 GoF 提出的 23 种设计模式中的一种. Builder 模式是一种对象创建型模式之一,用来隐藏复合对象的创建过 ...

  2. 策略模式和工厂模式的区别

    文章目录 策略模式和工厂模式的区别 相似点 差异 用途不一样 关注点不一样 UML图 实例 策略模式和工厂模式的区别 相似点 在模式结构上,两者很相似: 差异 用途不一样 工厂是创建型模式,它的作用就 ...

  3. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  4. 工厂方法模式与抽象工厂模式的区别

    工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类. 一个抽象工厂类,可以派生出多个具体工厂类. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以 ...

  5. 021 设计模式之工厂方法模式,抽象工厂模式的区别

    简单工厂模式,工厂方法模式和抽象工厂模式的异同 简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类.我们掌握一种思想,就是在创建一个对象时,需要把容易发 ...

  6. 控制反转(IoC) ? 工厂模式?

    不知道大家还记不记得当年程杰的<大话设计模式>了,最近一直想搞明白控制反转到底是怎么回事,刚刚觉得高大上了一点,然后再进一步去学习去对比的时候才发现,以前早就接触过这类的思想,设计原则的依 ...

  7. 解析Spring IOC原理——工厂模式与反射机制的综合应用

    (一)工厂模式 从一个例子开始讲起: 首先我们建立一个Chinese.java类,该类的sayHelloWorld(String name)方法,用中文对名为name的人问好,其内容如下: [java ...

  8. 工厂模式和抽象工厂模式的区别

    2019独角兽企业重金招聘Python工程师标准>>> 工厂是一种抽象,将创建对象的过程抽象:而抽象工厂更进一层,把工厂本身都抽象了. 工厂方法:定义一个用于创建对象的接口,让子类决 ...

  9. 工厂方法与抽象工厂模式的区别

    工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类. 一个抽象工厂类,可以派生出多个具体工厂类. 每个具体工厂类只能创建一个具体产品类的实例.抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派 ...

最新文章

  1. Windows下JSON可视化工具
  2. 如何将自己的站点与Ucenter整合——详解
  3. python相关函数_python列表相关函数
  4. lvm 扩展根目录_Lvm扩展根目录容量
  5. 12.1、Libgdx的图像之持续性和非持续性渲染
  6. 树堆(Treap)图文详解与实现
  7. 引用 CSS+DIV/Ul+LI/dl+dt+dd/tabale+css 样式
  8. phpcms移动端和pc端_phpcms 实现PC端、手机端的双模版
  9. 随着公司对各种网络需要的满足,公司服务器的响应不如购买及时性,第八章网络企业的供应链管理.ppt...
  10. 支付宝小程序前端开发简介
  11. 武汉理工大学华夏学院计算机类,2015年武汉理工大学华夏学院招生专业代码
  12. HBuilder X 连接逍遥Android模拟器
  13. 塔夫斯大学计算机专业,塔夫茨大学优势专业
  14. 【CAD二次开发】-ObjectARX-双击实体的响应 (AcDbDoubleClickEdit)
  15. LeetCode 325. Maximum Size Subarray Sum Equals k
  16. 工程项目管理数字化系统建设持续推动施工企业数字化转型行稳致远
  17. 计算机网红,网红短句
  18. 计算机教学在语文中应用,信息技术在语文教学中的运用3篇论文
  19. 实木地板被机器人弄成坑_木地板砸出小坑怎么办
  20. 【调剂】齐鲁工业大学(山东省科学院)2020年硕士研究生预调剂通知

热门文章

  1. 3.19 外协加工(通过BOM体现加工物料总成本,非系统标准工序外协功能)
  2. html 让文本居中,Html当中文本与标签如何让其居中
  3. Echarts饼图常用效果
  4. Linux shell 脚本之shift 命令实战
  5. 营销型新媒体运营者的必备能力
  6. 到底什么是hash呢?hash碰撞?为什么HashMap的初始容量是16?
  7. 阿里云2018双十一特惠
  8. rstp使用linux运行,RSTP 详细
  9. 又有一家fintech初创公司估值直冲千亿美金!
  10. SSM毕设项目大学生心理咨询系统792l6(java+VUE+Mybatis+Maven+Mysql)