Czytam stacka/blogi i widzę, że co następny wątek to zaprzeczanie temu co było napisane w innym, opisującym "to właściwe" podejście.
historia:
- Interfejs powinien być kontraktem pomiędzy klasą a wystawionym "api" dla uzytkownika zewnętrznego. Gdy masz wiele implementacji.. bla bla...
- Racja ale jeśli interface ma jedną implementacje, to sama w sobie jest tym kontraktem i nie trzeba wtedy interface
- Racja, ale co z unit testami? Do mockowania trzeba interface
- Racja ale są już takie biblioteki, w których możemy zastąpić te sztuczne interface potrzebne do unit testów..
i tak dalej... niekończąca się opowieść..
Ja już sam nie wiem co o tym myśleć. Byłem jakiś czas temu na rozmowie i gość zapytał mnie po co są interface. Mówię mu o polimorfizmie, abstrakcji, kontraktach, ale chyba go to nie zadowoliło, bo odpowiedział "no ok, zgadza się, ale nie o to pytałem- to po co stosuje się interface?". I co mu powinienem wtedy odpowiedzieć? Grzebie w internecie i sensownych odpowiedzi nie widzę, wszędzie dyskusje... zostały tylko domysły
(mam nadzieje, że dobrze nakreśliłem problem)