目录

前言:

1. 什么是IOC?

1.1 好莱坞原则是什么?

1.1.1 什么是多态

1.1.2 回调

1.1.3 OCP原则是什么?

1.1.4 IOC的通俗解释

1.1.5 DI?

1.1.6 为什么说IOC是好莱坞原则?


前言:

IOC主要的两种实现(依赖处理):依赖查找和依赖注入。

IOC的目的:解耦,关注于设计最终的目标而不是实现。

IOC的容器的职责:依赖处理,生命周期管理(容器,托管的资源-javabean等)。

1. 什么是IOC?

简答:IOC是控制翻转,类似于好莱坞原则,主要有依赖查找和依赖注入的实现。

1.1 好莱坞原则是什么?

Hollywood principle, 《编程导论(Java)》中提到,"Don't call me; I'll call you."      (don't call us, we'll call you)

现实生活中,乘客/you打的士到某地,沿途问司机/me某个景点,天经地义;但是,乘客/you不要从上车的第一秒开始,时时刻刻或每隔5秒问一下司机/me:到了打的的目的地没有,这也太烦人了。

 注意:好莱坞原则中的me是指 下层模块!

通常,Client即you(上层模块)调用下层Server即me天经地义,但是,对于某些方法,你不要轮询/骚扰我,我通知你

如果不采用通知方式——即不应用好莱坞原则,上层可以轮询。

好莱坞原则的核心:以通知替代轮询。

1.1.1 什么是多态

为什么提到这个呢?因为好莱坞原则跟多态也是有关系的。

父类型的引用指向子类型的对象。用一句比较通俗的话:同一操作作用于不同的对象,可以产生不同的效果。这就是多态。

就比如简单工厂模式,其实就是一种多态。

多态的使用场景(1)方法的重载和重写(2)子类对象的多态性

使用前提:a.有类的继承 b.由子类对父类方法的重写

使用方式:通过父类的引用指向子类的对象

好处:消除了类之间的耦合

1.1.2 回调

在分层结构中,上层依赖于下层,最后依赖于基础设施(如JDK、各种框架)。

因为依赖必须是单向

依赖的单向性,又因为子类依赖父类,所以:如果两者不同层,子类必须为上层模块。

1.1.3 OCP原则是什么?

Open Closed Principle, OCP

Software entities like classes, modules and functions should be open for extension but closed for modifications.

一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。

应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。(这个说的很有道理)

相关参考,转载部分:https://blog.csdn.net/yqj2065/article/details/8758101

1.1.4 IOC的通俗解释

IoC 也被称为好莱坞原则,“不要给我们打电话,我们会打给你”

控制反转,其实是一种思想。一种主动提供服务的思想。

IOC,就是由Spring负责控制对象的生命周期和对象间的关系,与我们传统的在对象内部直接控制背道而驰。

控制反转 就是把控制交给了spring统一管理。

在传统的程序开发中,完成一个业务逻辑至少需要两个或两个以上的对象协助完成。通常一个对象要使用另外一个对象,都是直接在对象内部通过new进行创建对象,由程序主动去创建以来对象。 但这就代表着当前的模块和它所依赖的对象紧紧耦合了。

IOC就是让spring主动创建和注入了依赖对象。

传统程序开发: 主动创建对象—>组装对象

但是,IOC容器:生产线—创建和组装对象,客户端直接获取

所以感觉spring就是一个大的工厂~

1.1.5 DI?

Spring的Ioc容器主要使用DI方式实现的,不需要主动查找,在系统运行过程中,动态的向某个对象提供它所需要的其他对象。

可以说@Autowired就是注入的一种吧~我感觉

所以需要用啥,就注入啥进入到这个类,我们不需要关心什么时候创建,怎么创建的。

大概就想打针一样注入进去 所以才叫做依赖注入吧~

依赖注入主要是通过反射机制来实现的。同时IOC提供了三种依赖注入的方式,分别是构造方法注入、setter方法注入和接口方法注入。

1.1.6 为什么说IOC是好莱坞原则?

我感觉就是你作为客户端,或者说是spring的上层,不需要关心spring 底层是怎么实现的这个东西。

我们只需要去拿就可以了,而不用一直去问spring 创建了么?

这个好莱坞原则是针对me来说的,也就是,我作为上层,我只需要去给容器打电话,而容器你不要老师来告诉我创建好了。

我需要我就去找你拿了

DONE~接下来是场景的使用和DI的方式~

[Spring]什么是IOC-好莱坞原则相关推荐

  1. 好莱坞原则和IOC控制反转

    "不要给我们打电话,我们会给你打电话(don't call us, we'll call you)"这是著名的好莱坞原则.在好莱坞,把简历递交给演艺公司后就只有回家等待.由演艺公司 ...

  2. java spring server_Java server框架之(1):spring中的IoC

    为什么需要IoC? 一般的对象耦合是在编译时确定的,也就是说当我们写如下类: 1 public classStaticCoupling { 2 3 String s = new String(&quo ...

  3. 优雅のJava(五)—— 优雅的观察对象与订阅信息 观察者模式 好莱坞原则

    文章目录 专栏导航 前言 好莱坞原则 工厂模式的思路借鉴 IOC的思路借鉴 问题核心 即时通讯的思路借鉴 GUI设计上的思路借鉴 后记 专栏导航 优雅のJava(零)-- 面向问题的学习 前言 这篇主 ...

  4. 请简述什么是spring的ioc和di_理解Spring中的IoC和DI

    什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...

  5. Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: Spring中的 ...

  6. 比Spring简单的IoC容器

    比Spring简单的IoC容器 Spring 虽然比起EJB轻量了许多,但是因为它需要兼容许多不同的类库,导致现在Spring还是相当的庞大的,动不动就上40MB的jar包, 而且想要理解Spring ...

  7. Spring核心技术之IOC容器(一):IOC容器与Bean简介

    最近开始研究Spring框架,今天学习Spring的核心内容IOC 与 Bean 1. Spring IOC 与 Bean 简介  Inversion of Control (IoC)即控制反转,也叫 ...

  8. 抛开 Spring 去理解 IOC 思想:原来 IOC 容器这么简单

    很多小伙伴们看到标题可能就会想到抛开 Spring 就不会存在 IOC 思想了,其实不然在接下来的文章中就会讲述到. 很多小伙伴在理解 IOC 的时候通常会和 Spring 放到一起去学习,首先呢 S ...

  9. java元婴期(17)----java进阶(spring(1)----spring基本概念IOC)

    1.spring是什么? Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Orien ...

  10. ioc spring 上机案例_抛开Spring去理解IOC思想 - 原来IOC容器这么简单

    很多小伙伴们看到标题可能就会想到抛开Spring就不会存在IOC思想了,其实不然在接下来的文章中就会讲述到. 很多小伙伴在理解IOC的时候通常会和Spring放到一起去学习,首先呢Spring设计的非 ...

最新文章

  1. struts2文件下载出现Can not find a java.io.InputStream with the name的错误
  2. python重命名文件或目录_Python重命名多个文件的实例方法
  3. 简单的五子棋操作用两种方法实现
  4. 线程控制、如何给面试官描述线程不安全的情况?模拟黄牛抢票展现不安全的情况及解决方式、互斥锁加锁解锁
  5. 中国剩余定理 —— 入门
  6. BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】
  7. Windows消息目录-消息大全
  8. python 参数一样结果不一样_优化Keras的超参数:相同参数的结果不同
  9. 骁龙888打开“新象限” ,专业相机和游戏机直呼不讲武德
  10. 嵌入式硬件学习——分压电路
  11. wps表格宏被禁用如何解禁_(wps表格怎么设置宏)为什么每次打开excel文件都要提示启用或者禁用宏?...
  12. 缺陷管理工具大PK:UniPro、Bugzilla和Teambition哪家强
  13. 关于创建和替换STK软件的3D模型图方法及其介绍
  14. 犹太裔大陆籍华人的故事-值得一读
  15. 大数据权限管理sentry与Kerberos概述
  16. 屯特大学计算机排名,荷兰屯特大学世界排名2021
  17. python能参加奥赛吗-【家长必读】孩子学编程能参加哪些高含金量的比赛?
  18. 【时空序列预测paper】ConvLSTM:A Machine Learning Approach for Precipitation Nowcasting
  19. java限定符_Java-泛型限定符、通配符
  20. 这件小事,我坚持了 300 天

热门文章

  1. 【分享】搜书V2.19,上千书源全网免费搜索阅读,无广告纯净版 秒杀轻阅和阅读...
  2. 计算机应用技术办公室自动化,办公室自动化的计算机处理技术应用研究
  3. 深入理解JVM一之解析class文件
  4. 【通俗易懂的通信】信源的相关性和剩余度(冗余度)
  5. 纽约大学深度学习PyTorch课程笔记(自用)Week3
  6. 文件的基本操作--利用爬取的王者荣耀李信台词进行练习
  7. 云计算技术基础【1】
  8. 元账户层是进入Web3元宇宙的传送门
  9. 《计算机网络》第三章作业
  10. php fav ico_前5名:失败原因,Fav桌面环境,代码游戏玩家评论等