Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest zasada odwrócenia zależności?

Ostatnia aktualizacja:

Zasada odwrócenia zależności (Dependency Inversion Principle, DIP) to piąta z zasad SOLID. Mówi, że moduły wysokiego poziomu, zawierające logikę biznesową, nie powinny zależeć od modułów niskiego poziomu, takich jak baza danych czy mailer. Obie warstwy mają zależeć od abstrakcji, czyli interfejsów.

Co to znaczy w praktyce?

Zamiast tworzyć wewnątrz serwisu konkretny obiekt MySqlRepozytorium, serwis zależy od interfejsu Repozytorium, a konkretną implementację otrzymuje z zewnątrz. Kierunek zależności zostaje „odwrócony”: to szczegóły dostosowują się do interfejsu zdefiniowanego przez logikę biznesową.

DIP a wstrzykiwanie zależności

Zasada opisuje cel projektowy, a wstrzykiwanie zależności jest techniką jego osiągnięcia. Do dostarczania obiektów często używa się kontenera DI, ale zasada nie wymaga żadnego konkretnego frameworka.

Korzyści

Można zmienić bazę danych lub dostawcę poczty bez ruszania logiki biznesowej, a testy jednostkowe używają prostych atrap zamiast prawdziwych usług.

Przykład w kodzie

Klasa ZamowieniaUsluga przyjmuje w konstruktorze obiekt implementujący PowiadomieniaInterfejs. Dla produkcji przekazujesz klasę wysyłającą e-mail, a w testach prostą atrapę, która tylko zapisuje wywołania. Usługa nie wie, jak wysyłane są powiadomienia, więc zmiana dostawcy poczty wymaga napisania nowej implementacji, bez dotykania logiki zamówień.

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe