Odwrócenie sterowania (ang. Inversion of Control, IoC) – paradygmat (czasami rozważany też jako wzorzec projektowy lub wzorzec architektury) polegający na przeniesieniu funkcji sterowania wykonywaniem programu do używanego frameworku. Framework w odpowiednich momentach wywołuje kod programu stworzony przez programistę w ramach implementacji danej aplikacji. Odbiega to od popularnej metody programowania, gdzie programista tworzy kod aplikacji, który steruje jej zachowaniem. Następnie używa we własnym modelu sterowania bibliotek dostarczonych przez framework.
- Termin ten jest najczęściej utożsamiany z wstrzykiwaniem zależności. Tymczasem wstrzykiwanie zależności jest tylko jednym z przykładów realizacji IoC (w tym przypadku sterowanie zostaje odwrócone w obszarze tworzenia powiązań pomiędzy obiektami). Termin „wstrzykiwanie zależności” został wymyślony[1] w celu rozróżnienia pomiędzy tymi dwoma terminami. Wiele osób wskazuje, że formami IoC są również programowanie aspektowe oraz wzorzec strategii.
- Wiele osób utożsamia wzorzec IoC z biblioteką Spring Framework. W rzeczywistości koncepcja IoC jest znacznie starsza niż Spring. Spring jest jedną z implementacji, podobnie jak są nimi PicoContainer, Plexus framework, itp.