控制反转(Inversion of control,IoC)是一种编程技术,其中使用通用代码结构来管理多个唯一和特定的子例程。这使传统的编程方法发生了翻天覆地的变化,在传统的编程方法中,特定的代码控制着许多可重用和通用的子例程。控制反转通常用于程序员知道他或她不必多次重用特定代码段的情况,从而允许灵活的设计,在这种情况下,程序的子程序可以在不对整个程序进行实质性更改的情况下进行切换。
在传统编程中,代码主体将反复调用执行单个函数的通用子程序。例如,在处理会计的程序中,设计用于允许最终用户搜索特定订单号的子例程可能会在程序的各个部分多次调用,从而允许用户从程序的多个不同区域执行非常通用的搜索算法。重用代码简化了编程过程,但如果程序员希望在不影响使用代码的其他部分的情况下调整程序某一部分的搜索算法,则会造成复杂性。
使用控制反转场景下的相同示例,单个搜索子例程不会在程序的多个区域中多次调用。相反,程序的每个部分都将包含自己完全独立的搜索子例程。这增加了最初编写程序所需的时间,但简化了以后可能需要对设计过程中的各个子程序进行的任何特定调整。在一个特定区域更改一个子例程将使程序的其余部分完全不受影响。
这种技术的一个主要优点是,当在大型团队中工作时,它使程序设计更加容易。随着工人数量的增加,团队成员之间的沟通必然会越来越困难,控制反转允许每个团队规划自己的个人例程,允许他们彼此独立运作。它还简化了系统中bug的影响,因为每个团队的子例程中任何挥之不去的错误都只会影响程序的特定部分。因此,当在系统的一部分中发现问题时,程序的其余部分应保持完全功能。
虽然控制反转可以简化程序设计,但它确实需要关于如何设计对象的先验知识。虽然每个例行程序都可以单独编程,但IoC创建者必须知道如何对每个项目进行编程,以防需要进行更改,因此对于一个新手程序员来说,使用IoC并不总是容易的。此外,由于每个例行程序都是独立运行的,因此它们都对外部世界可见,这可能会遭到一些公司的反对。
...而周心倒位发生在两条臂上。 目录 1. 概述和主要区别 2. 什么是傍心反转 3. 什么是周心反转 4. 旁着丝粒和周心反转的相似性 5. 并排比较-以表格形式显示的近心和近心反转 6. 摘要 什么是傍心反转(paracentric inversion)? 旁着丝粒倒...
...染色体之间,它改变了位置。 目录 1. 概述和主要区别 2. 什么是反转 3. 什么是易位 4. 倒转与易位的相似性 5. 并列比较-表格形式的倒转与易位 6. 摘要 什么是倒置(an inversion)? 入侵是染色体重排的一种类型,它会在原生染色体上...
指挥系统(chain of command)和控制范围(span of control)的区别 指挥链和控制范围是组织中与组织层次结构相关的两个重要方面。这两个术语可能会混淆为一个术语,并且由于它们在目标上的相似性而互换使用,即确保组织内的人力...
...们进入实质。要在iPhone或iPad上启用暗模式,请首先打开Control Center。 如果你有一个带有凹槽的iphonex风格的设备,请从屏幕右上角向下滑动。iPad用户也是如此。如果您使用的是带有Home按钮的iPhone,请从屏幕底部向上滑动以打开Co...
...If the passenger identifies an emergency situation, the passenger may take control of the vehicle immediately. For example, passenger may see an obstacle which computer has not identified, such as a bicyclist or road c***truction. Without first disarming computer, passenger may grip the steering whe...
...体部分在非同源染色体之间的交换。 覆盖的关键领域 1.什么是倒装-定义、类型、效果2.什么是易位-定义、过程、效果3.倒装和易位的相似之处是什么-共同特征概述4.倒装和易位的区别是什么-关键区别的比较 关键词:着丝粒,染...
...无选择。幸运的是,iOS和android4.0及更高版本可以轻松地反转屏幕颜色,实现即时的“夜间模式”我们之前分享过如何在桌面浏览器中反转颜色,这个技巧对**同样有用。如果您使用的是Android设备,请打开浏览器,进入“设置”&a...
人体的每一项功能都由大脑的不同区域控制,其中前脑是最广泛的区域。主要的行为...
当在合伙企业或公司中正式拥有最终权力的任何实体因任何原因发生变更时,控制权...