“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。
模板方法模式充分的体现了“好莱坞”原则。IOC是Inversion of Control的简称,IOC的原理就是基于好莱坞原则,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。
所有的framework都是遵循好莱坞原则设计的,否则就不叫framework。framework使用IoC的目的:
  1.对基于接口编程的支持
  2.减少单件和抽象工厂的依赖
  3.降低业务和框架的耦合
  4.业务组件可复用,可插拔
好莱坞原则在软件开发领域中极受追捧:我们经常把控制逻辑写在其他地方(例如Framework)而非客户化的代码里,我们就更专注于客户化的逻辑,也就是说,外部逻辑负责调用我们客户化的逻辑。在软件开发领域,我们又给它取了一个名字叫控制反转(IoC)[1]。
控制反转的涉及面十分广泛,有人认为它是一个模式,但是我更倾向于认为它是一个原则(Principle)。很多模式都实现了控制反转(例如模板方法模式),例如,我们第2章讲解的模板方法模式就是控制反转的一个很好应用,父类的模板方法控制子类的方法调用;还有,使用回调的方法都是控制反转的很好应概念用。
         再如,在Java标准库里,我们常用到查找和排序的这两个方法,binarySearch(…)和sort(…)方法,它们在执行过程中会调用对象的compareTo()方法(如果这些对象实现了java.lang.Comparable接口的话),或者调用我们所传递的回调接口java.util.Comparator对象的compare()方法来比较大小,最终完成查找/排序操作,这些都是控制反转的例子。
       此外,我们经常提到的框架(Framework),它最典型的特点其实就是控制反转:框架抽象了通用流程,我们可以通过框架提供的规范(比如子类化抽象类或者实现相关的接口,实现相关的交互协议和接口等等)就可以把客户化的代码植入流程中,完成各种定制的需求。框架和工具库(Library)的区别是:如果框架没有实现控制反转,那么框架就会退化为工具库。也就是说,使用工具库,你必须撰写调用它们的逻辑,每次调用它们都会完成相应的工作,并把控制权返回给调用者;而框架不需要客户程序撰写控制调用的逻辑,由框架专门负责。

好莱坞原则和IOC控制反转相关推荐

  1. IoC控制反转设计原则——实现松耦合

    IoC控制反转设计原则--实现松耦合 1.IoC设计原则 1.1.控制程序流 1.2.控制依赖对象的创建 2.从典型的n层体系架构来理解IoC IOC是一种设计原则(虽然,有很多人将它当成是一种设计模 ...

  2. java中控制反转_Java如何利用IOC控制反转的三种设计模式详解

    这篇文章主要为大家详细介绍了Java使用IOC控制反转的三种设计模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于许多开发人员来说,控制反演(IoC)都是一个模糊的概念,因为他们在现实世界中 ...

  3. Spring框架中IoC(控制反转)的原理

    一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.即软件系统中对象之间的耦合,对 ...

  4. 什么是IOC(控制反转)、DI(依赖注入)举个形象的例子通俗易懂

    更多免费教学文章请关注这里 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清 ...

  5. 什么是IOC(控制反转)、DI(依赖注入)

    原文地址(摘要了部分内容):https://blog.csdn.net/qq_22654611/article/details/52606960/ 学习过Spring框架的人一定都会听过Spring的 ...

  6. 谈谈php里的IOC控制反转,DI依赖注入

    理论 发现问题 在深入细节之前,需要确保我们理解"IOC控制反转"和"DI依赖注入"是什么,能够解决什么问题,这些在维基百科中有非常清晰的说明. 控制反转(In ...

  7. 详解spring的IOC控制反转和DI依赖注入

    转载 详解spring的IOC控制反转和DI依赖注入 2018-06-05 15:45:34 jiuqijack 阅读数 2945 文章标签: spring IOC控制反转 DI依赖注入 更多 分类专 ...

  8. Spring的IOC(控制反转)与DI(依赖注入)

    Spring控制反转与依赖注入 文章目录 Spring控制反转与依赖注入 1. 控制反转(IOC) 2. 依赖注入(DI) 3. 总结 1. 控制反转(IOC) 控制反转(Inversion of C ...

  9. (八)Spring之IOC控制反转、DI依赖注入介绍和使用(详解)

    文章目录 前言 Spring Spring IOC 简介 Bean IOC 概述 IOC 本质理解 Spring IOC 应用 IOC xml装配 IOC 依赖注入 IOC Bean的作用域 IoC ...

最新文章

  1. js中正则表达式验证_JS正则表达式的验证
  2. 研究人员利用脑电ErrP信号实时控制机器人
  3. 网站的加载速度该如何进行优化提升?
  4. 数据中台实战入门篇:数据中台对内、对外合作机制
  5. 多线程:Executor、Sleep、Deamon、Yeild
  6. Duplicate Strings 字符串 取模 牛客练习赛95
  7. Javascript设置对象属性为只读
  8. WINCE的KITL调试环境
  9. Spring 2.5 jar 所有开发包及完整文档及项目开发实例
  10. linux下安装rabbitmq以及在spring中进行集成
  11. php地名转换成拼音,php汉字转拼音_php中怎么将中文转换拼音
  12. Java 测试 - 单元测试用例自动生成框架 EvoSuite
  13. java spring定时器_Spring定时器的使用
  14. 区块链开发语言python_区块链开发语言有哪些?哪种语言更适合区块链开发?
  15. Http状态码406(Not Acceptable)
  16. IEEE爬取摘要并翻译成中文
  17. Docker与Dragonfly详细多机部署
  18. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、太阳视运动)...
  19. 非华为电脑使用EMUI10多屏协同教程
  20. java 口袋算法_口袋算法,pocket algorithm,音标,读音,翻译,英文例句,英语词典

热门文章

  1. import 和 from … import 模块的变量、方法引用差异
  2. 图像处理方面的sci期刊_图像处理领域的SCI期刊.doc
  3. 数据库实战20_获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和received,没有分配奖金的员工不显示对应的bonus类型btype和received
  4. 皮边油消泡剂消除泡沫另一视角曝光
  5. 赌徒谬误论,投掷硬币,连续5次都是正面朝上,第6次正面反面的概率?
  6. 报错 ITK only supports orthonormal direction cosinea
  7. java hibernate 是什么意思_Java开源项目Hibernate意义是什么?
  8. PS修图台式机装机方案
  9. 【算法】离散傅里叶变换(DFT)
  10. Kafka实践(八):Kafka的控制器controller