SOLID - zasada odwracania zależności

0

Aktualnie ogarniam wzorzec SOLID i wszystkie zasady są mi jasno oprócz zasady odwracania zależności.

Na pewnej stronie, że według tej zasady żadna klasa nie powinna dziedziczyć po konkretnej klasie, ponieważ napisany przez nas kod nie powinien być zależny od konkretnej klasy.

I nie rozumiem o co w tym chodzi ? Czy nie mogę użyć dziedziczenia według tej zasady ?

0

Chodzi miedzy innymi o to, żeby operowac interfejsami.

1

Klasa ma nie zależeć od konkretnej implementacji tylko od interfejsu.

0

Tak jak poprzednicy wspomnieli, chodzi o operowanie na interfejsach zamiast na konkretnych klasach. Ułatwia to znacznie późniejsze testowanie za pomocą testów jednostkowych oraz integracyjnych.

0

Z tego co rozumiem to zasada odwróconej zależności oznacza że obiekty (klasy) wyższej warstwy aplikacji nie powinny być zależne od konkretnej implementacji używanych obiektów(klas) niższych warstw.
Czyli "góra" rządzi i zleca zadania , a "dół" wie jak to wykonać.
Tym samym wydaje mi się że w ogólności odwracanie zależności to zasada dotycząca abstrakcji aplikacji i podziału aplikacji na logiczne warstwy, w którym to podziale wyższe warstwy nic nie wiedzą o szczegółach implementacji niższych warstw które są używane przez wyższą warstwę. A klasyczne interfejsy są bardzo dobrym narzędziem do implementacji tej zasady

1

według tej zasady żadna klasa nie powinna dziedziczyć po konkretnej klasie

Nie no to by było bez sensu ;) Chodzi o to żeby minimalizować zależność od konkretnych implementacji pomiędzy warstwami a już koniecznie pomiedzy modułami.
Jeśli piszesz np. program który pracuje z jakimiś plikami konfiguracyjnymi to zrób interfejs ConfigurationFile i niech cały kod polega na tym interfejsie, niezależnie od tego czy będzie to w praktyce XMLConfigurationFile czy JSONConfigurationFile. Dzięki temu mozesz łatwo dodać nowy format bez potrzeby igerencji w istniejący kod. Ba, ktoś za 10 lat może dodać nowy format i cały soft nadal będzie działał!

1 użytkowników online, w tym zalogowanych: 0, gości: 1