<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.karljones.com/index.php?action=history&amp;feed=atom&amp;title=Inversion_of_control</id>
		<title>Inversion of control - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.karljones.com/index.php?action=history&amp;feed=atom&amp;title=Inversion_of_control"/>
		<link rel="alternate" type="text/html" href="http://wiki.karljones.com/index.php?title=Inversion_of_control&amp;action=history"/>
		<updated>2026-10-23T16:02:14Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>http://wiki.karljones.com/index.php?title=Inversion_of_control&amp;diff=18572&amp;oldid=prev</id>
		<title>Karl Jones: Created page with &quot;In software engineering, '''inversion of control''' (IoC) is a design principle in which custom-written portions of a computer program receive the Control flow|flow of c...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.karljones.com/index.php?title=Inversion_of_control&amp;diff=18572&amp;oldid=prev"/>
				<updated>2016-09-20T20:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;In &lt;a href=&quot;/index.php/Software_engineering&quot; title=&quot;Software engineering&quot;&gt;software engineering&lt;/a&gt;, &amp;#039;&amp;#039;&amp;#039;inversion of control&amp;#039;&amp;#039;&amp;#039; (IoC) is a design principle in which custom-written portions of a computer program receive the Control flow|flow of c...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In [[software engineering]], '''inversion of control''' (IoC) is a design principle in which custom-written portions of a computer program receive the [[Control flow|flow of control]] from a generic [[software framework]].&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
A [[software architecture]] with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.&lt;br /&gt;
&lt;br /&gt;
Inversion of control is used to increase [[Modular programming|modularity]] of the program and make it [[Extensible programming|extensible]], and has applications in [[object-oriented programming]] and other [[Programming paradigm|programming paradigms]].&lt;br /&gt;
&lt;br /&gt;
The term was popularized by [[Robert C. Martin]] and [[Martin Fowler]].&lt;br /&gt;
&lt;br /&gt;
The term is related to, but different from, the [[dependency inversion principle]], which concerns itself with decoupling dependencies between [[High- and low-level|high-level and low-level]] [[Abstraction layer|layers]] through shared [[Abstraction (software engineering)|abstractions]].&lt;br /&gt;
&lt;br /&gt;
The general concept is also related to [[event-driven programming]] in that it is often implemented using IoC, so that the custom code is commonly only concerned with handling of events, whereas the [[event loop]] and dispatch of events/messages is handled by the framework or the [[run time]] environment.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Abstraction layer]]&lt;br /&gt;
* [[Asynchronous I/O]]&lt;br /&gt;
* [[Callback (computer science)]]&lt;br /&gt;
* [[Closure (computer science)]]&lt;br /&gt;
* [[Continuation]]&lt;br /&gt;
* [[Delegate (CLI)]]&lt;br /&gt;
* [[Dependency inversion principle]]&lt;br /&gt;
* [[Flow-based programming]]&lt;br /&gt;
* [[Implicit invocation]]&lt;br /&gt;
* [[Interrupt handler]]&lt;br /&gt;
* [[Message Passing]]&lt;br /&gt;
* [[Monad (functional programming)]]&lt;br /&gt;
* [[Observer pattern]]&lt;br /&gt;
* [[Publish/subscribe]]&lt;br /&gt;
* [[Service locator pattern]]&lt;br /&gt;
* [[Signal (computing)]]&lt;br /&gt;
* [[Software framework]]&lt;br /&gt;
* [[Strategy pattern]]&lt;br /&gt;
* [[User exit]]&lt;br /&gt;
* [[Visitor pattern]]&lt;br /&gt;
* [[XSLT]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Inversion_of_control Inversion of control] @ Wikipedia&lt;br /&gt;
&lt;br /&gt;
[[Category:Computer science]]&lt;br /&gt;
[[Category:Software engineering]]&lt;/div&gt;</summary>
		<author><name>Karl Jones</name></author>	</entry>

	</feed>