Przykład: mamy interfejs HejtoService i dla niego jest implementacja HejtoServiceImpl - i generalnie wszystkie publiczne metody implementacji muszą pokrywać się z tym co jest w interfejsie.
I tak 99% klas ma i zawsze będzie miało tylko jedną implementację - bo zawsze jak zmieniają się wymagania, to modyfikuje się implementację, a nie dopisuje kolejną.
No i później wchodzę do jakiegoś pakietu i mam tam np. 10 plików (5 implementacji i 5 interfejsów) - ciężej cokolwiek znaleźć, ciężej nawigować po drzewku projektu - bo zwyczajnie jest 2x więcej plików.
Dodatkowo chcąc przejść do implementacji danej metody (z miejsca, z którego została użyta), zawsze muszę przejść przez interfejs.
Przykład:
ServiceAImpl -> ServiceB -> ServiceBImpl -> ServiceC -> ServiceCImpl
vs
ServiceA -> ServiceB -> ServiceC
Debugując jest identycznie.
Żebyście mnie nie zrozumieli źle, ja lubię używać interfejsów, tam gdzie faktycznie widzę ich zastosowanie. Np. kiedyś kodowałem jakieś generowanie raportów, wykresów, czy czytanie z pliku - gdzie mamy różny format plików, albo przedział czasowy - i tam interfejsy pasują mi idealnie i widzę ich zastosowanie.
No i mam pytanie, po co tworzyć takie interfejsy? Pytam całkiem poważnie i proszę o proste wyjaśnienie, bo dla mnie nie wprowadzają niczego pozytywnego.
#java #programowanie #kiciochpyta
![e87ff900-41a6-4eaa-9dcd-7d4ba416b29f](https://cdn.hejto.pl/uploads/posts/images/1200x900/874ff01e0561c274282ea954d399cbd5.jpg)