![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 11 Dołączył: 8.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Nie rozumiem paru rzeczy w programowaniu obiektowym, mianowicie sensu interfejsów i abstrakcji. Przecież taki interfejs w ogóle jest niepotrzebny i tylko zwiększa (nieznacznie) rozmiar naszego pliku, albowiem on tylko wymusza zdefiniowanie jakiejś metody. Ogólnie tą metodę możemy zdefiniować bez żadnego interfejsu - efekt ten sam.
Abstrakcji też nie rozumiem. Przecież ów deklaracja jest absolutnie niepotrzebna; można to zrobić w klasie, która coś dziedziczy.
Ogólnie nie widzę sensu w użytku tego - jest to używane tylko do debugowania albo przejrzystości czy jak? Bo ogółem nie ma to innego sensu raczej. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 14 Dołączył: 23.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Interfejs jest po to abyś mógł podpowiedzieć sobie lub innemu programiście czego oczekujesz od danego obiektu klasy, co powinien on umieć zrobić. Gdy np. przyjmujesz obiekt poprzez dependency injection, jak zostało to pokazane wyżej w UserRepository, to możesz się spodziewać że przekazany Ci obiekt będzie robił to co interfejs UserStorageInterface mu każe. Oznacza to że spokojnie w innym miejscu możesz wywoływać na danym obiekcie metody zaimplementowane z interfejsu UserStorageInterface bez obaw że ich tam nie ma i że dostaniesz fatal error podczas wykonywania kodu. Gdy natomiast jesteś zainteresowany tym by skorzystać z UserRepository to od razu wiesz jakie metody powinieneś zaimplementować w swoich obiektach.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2024 - 19:50 |