D jak Dependency Inversion Principle, czyli Zasada odwrócenia zależności

przez Karol Bocian | 24 lutego, 2020

Dependency inversion principle — Zasada odwrócenia zależności

Wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych i detali, lecz zależność powinna wynikać z abstrakcji.

Wszystkie wysokopoziomowe moduły powinny być związane z niskopoziomowymi za pomocą abstrakcji. Abstrakcje nie powinny zależeć od detali, lecz to detale powinny być zależne od abstrakcji.

Pomocne w spełnieniu tej zasady jest przestrzeganie tych reguł:

  • Każda zmienna w klasie jest referencja do abstrakcji.
  • Wszystkie klasy dziedziczą po abstrakcji.
  • Żadna klasy potomna nie przesłania metod z klasy bazowej.
  • Ustawianie zmiennych realizowane jest przez wzorzec fabryki lub wstrzykiwania zależności.

Regułę tę można stosować do metod, funkcji, klas, modułów oraz pakietów.

Zalety

  • Łatwiejsze wymienianie komponentów.
  • Łatwiejsze wprowadzanie zmian w oprogramowaniu.
  • Łatwiejsze ponowne wykorzystywanie komponentów.
  • Łatwiejsze testowanie.

Wady

  • Konieczność korzystania z interfejsów i klas abstrakcyjnych.
  • Pracochłonność w tworzeniu stabilnych abstrakcji.
  • Konieczność korzystania z fabryk lub wstrzykiwania zależności.

Przykład

  • Klasa generująca raport (wysoki poziom) korzysta klasy logującej informacje o wyjątkach w aplikacji (niski poziom). Musi przekazać m.in. ścieżkę do folderu z logami. Zmiana klasy logującej do pliku na klasę logującą do bazy danych wymusi zmianę w klasie generującej raport, bo trzeba będzie przekazać inne dane do konstruktora klasy logującej.
  • Klasa Kopiarka wykorzystująca klasę Czytnika i klasę Zapisywacza. Jeżeli mamy użyte klasy, a będziemy chcieli zmienić sposób zapisywania (z drukowania na drukarce, w generowanie pdfa), to będziemy musieli zmienić również klasę Kopiarka albo stworzyć nową klasę KopiarkaPdf. Gdyby klasa Kopiarka miała referencje do interfejsów IZapisywacz, to wystarczyłoby wstrzyknąć w nią odpowiednią implementację IZapisywacza, aby osiągnąć nasz cel.

Wszystkie posty związane z mini projektem: Poznaj zasady SOLID i OOP:

Źródła

Obraz główny

Materiały

Kategoria: IT Projekt Poznaj zasady SOLID i OOP Tagi: it, OOP, programowanie, SOLID

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.