Dlaczego stosuje się Interface jak typ?

2015-02-11 17:52
Wolter
0

Siemka, uczę się języka C# i spotkałem się z takim przykładem, IList lista? Dlaczego niekiedy stosuje się interfejst, zamiast classy jako typ zmiennej? Jakie są z tego korzyści, domyślam się że od tak tego się nie stosuje?
Pozdrawiam

Pozostało 580 znaków

2015-02-11 17:57
0

Do czego służą interface w C#


Przyjmę zlecenia / projekty do wykonania w c#. Zainteresowanych zapraszam do konwersacji na PW.

Pozostało 580 znaków

2015-02-11 18:12
2

Interfejsy jako typy stosuje się dlatego, że interfejsy są typami.

Dlaczego niekiedy stosuje się interfejst, zamiast classy jako typ zmiennej?

Jeśli chcemy, aby metoda przyjmowała dowolny typ implementujący jakiś interfejs, bo mamy zamiar wewnątrz niej korzystać z metod lub właściwości tego interfejsu.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2015-02-11 18:24
Wolter
0

To wiele wyjaśnia somekind, dzięki :)

Pozostało 580 znaków

2015-02-11 18:50
ŁF
0

Interfejsy bardzo przydają się przy testach jednostkowych (mocki) oraz przy IoC.


Pokaż pozostałe 8 komentarzy
Ja wiem, co to IoC, tylko Ty w kontekście IoC napisałeś od razu o konkretnym kontenerze DI, stąd moje niezrozumienie. przy wywołaniu metody A() z takiego obiektu wykona się metoda B() z zupełnie innego obiektu, która być może wywoła A() - mi to wygląda na jakiś słaby projekt aplikacji, skoro dopuszcza tego typu rekurencję. Z drugiej strony, wszelkie programowanie zdarzeniowe, aspektowe czy nawet zastosowanie metody szablonowej to przykłady IoC, to też Ci przeszkadza? - somekind 2015-02-13 14:46
@somekind: znowu dyskusja o tym czy marchewka jest pietruszką? - vpiotr 2015-02-13 14:52
Przeszkadza mi to, o czym już napisałem, nie widzę powodu, żeby się powtarzać. Rekurencja nie ma nic do rzeczy, wtf? Mowa np. o loggerze, który zapisuje parametry wywołania i czas wykonywania każdej metody (co ma ręce i nogi), ale który to logger może przerodzić się w coś, co dla jednej metody zrobi coś dodatkowo. Powodzenia przy testach i powodzenia w tropieniu dziwnego zachowania kodu po dwóch latach. Programowanie zdarzeniowe w postaci takiej, jak np. w ActionScript, gdzie na nic nie możesz poczekać, jest na dłuższą metę niewygodne. - ŁF 2015-02-13 15:44
Mam wrażenie, że patrzysz na IoC książkowo i usiłujesz prowadzić ze mną dyskusję akademicką, a tymczasem ja piszę o konkretach i o praktyce, bo tu widzę IoC i zagrożenia, jakie ze sobą niesie. Co ma StructureMap i DI do programowania zdarzeniowego? Mam coraz większe wrażenie, że albo piszę nieczytelnie, albo czytasz to co napisałem bez zrozumienia, albo chcesz mi narzucić swoje zdanie. Napisałeś "IoC daje Ci obiekty, których potrzebujesz tam, gdzie ich potrzebujesz", co moim zdaniem podsumowuje Twoją praktyczną wiedzę na ten temat - i tu chciałbym zakończyć dyskusję. - ŁF 2015-02-13 15:52
Nie patrzę na nic książkowo, ani nie chcę żadnego zdania narzucać. Po prostu od początku nie rozumiem o co Ci chodzi, gdy piszesz o IoC, zmianie sterowania i code injection. Wszystko to jest bardzo niejasne w Twoim opisie. Przykład z loggerem coś mi objaśnia, ale nie widzę w tym IoC tylko niechlujność programisty. Czepianie się skrótu myślowego, którego użycie Ty sprowokowałeś to jakiś WTF dla mnie. @vpiotr - bynajmniej, mnie tylko interesuje, o co chodzi w tych dywagacjach. - somekind 2015-02-13 16:43

Pozostało 580 znaków

2015-02-12 11:12
0

Interfejsy są przydatne gdy chcesz określić minimalne wymagania co do klasy ale nie interesuje Cię ani z czego dziedziczy, ani jak się ją konstruuje ani jakie ma atrybuty.

Dzięki temu masz najmniejszą wymaganą specyfikację i duże pole do manewru w implementacji tej klasy.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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