Czym jest odwrócenie sterowania?
Odwrócenie sterowania (ang. Inversion of Control, IoC) to zasada, w której to framework kontroluje główny przepływ działania programu, a kod napisany przez programistę jest wywoływany w odpowiednich momentach.
To jedna z kluczowych różnic między frameworkiem a biblioteką.
Biblioteka a framework
W przypadku biblioteki programista sam decyduje, kiedy wywołać jej funkcje:
const wynik = biblioteka.oblicz(dane);
Programista kontroluje przebieg programu, a biblioteka tylko dostarcza gotowe narzędzia.
W przypadku frameworka sytuacja jest odwrotna. Framework narzuca strukturę aplikacji i sam wywołuje fragmenty kodu programisty, np. kontrolery, komponenty, zdarzenia lub metody cyklu życia.
Przykład
W aplikacji webowej framework może sam obsługiwać żądanie HTTP i wywołać odpowiednią metodę kontrolera:
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
Programista nie pisze całego mechanizmu odbierania żądań HTTP od zera. Dostarcza tylko fragment logiki, który framework uruchamia w odpowiednim momencie.
Dlaczego to ważne?
Odwrócenie sterowania oznacza, że framework:
- określa strukturę aplikacji,
- narzuca sposób organizacji kodu,
- zarządza cyklem życia elementów aplikacji,
- wywołuje kod programisty wtedy, gdy jest potrzebny.
Dlatego w pytaniach egzaminacyjnych framework należy kojarzyć nie tylko ze zbiorem gotowych funkcji, ale przede wszystkim z fundamentem i szkieletem aplikacji.