Aktywne Wpisy
Davvs +23
bezbekpol +92
Kilka godzin temu musiałem uśpić psa. Nie mógł już samodzielnie funkcjonować, od kilku dni było wiadomo, że dzisiejsza wizyta będzie prawdopodobnie ostatnią. Z jednej strony, zrobiliśmy wszystko, co się da, pies miał szczęśliwe życie i od dawna było wiadomo, że to wkrótce nastąpi. Z drugiej, ten dzień przebiegał jak każdy inny, może poza większą ilością smaczków, ulubionego jedzenia i przytulania, by kilkanaście godzin później wyjść razem, ostatni raz obsikać jakieś drzewo. Potem
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Hej, jest tutaj ktoś kto korzysta z inversify czy generalnie z ioc w Typescripcie (choć niekoniecznie musi to być TS)? Nie za bardzo mogę zrozumieć o co chodzi w 'Dependency inversion principle', wszędzie czytam, że to jest super, a nie mogę zneleźć żadnego praktycznego przykładu, który by mi pokazał w czym takie podejście jest lepsze od 'zwykłego' importowania modułów + implementowania interfejsów z poziomu klasy i opierania się na nich. :/
Dla zobrazowania weźmy taki przykład. Aplikacja składa się powiedzmy z 3 'warstw'.
1) Kontroler -przekazuje request do serwisu i zwraca response
2) Serwis - jakaś metoda np. #!$%@? hasło i przekazuje obiekt do metody z repozytorium
3) Repozytorium - obiekt zapisywany jest do bazy
Dlaczego warto skorzystać z Inversify zamiast zrobić to np. tak: https://pastebin.com/c3SgLD9a
I co w zasadzie w przykładzie z ninjami i szurikenami jest bindowane do czego.
https://github.com/inversify/InversifyJS#step-3-create-and-configure-a-container
np.
const myContainer = new Container();
myContainer.bind(TYPES.Warrior).to(Ninja);
To jest coś takiego?
myContainer.bind(TYPES.Serwis).to(Serwis)?
Nie można po prostu implementować interfejsu na poziomie klasy? I jak mogę później wstrzykiwać np. serwisy do kontrolera, tak jak napisałem w pastebinie, tylko z adnotacjami @inject?
Kurde, nie jestem w stanie tego zrozumieć. :/ Będę wdzięczny za każdą pomoc.
Jednym ze sposobów implementacji Dependency Inversion Principle jest coś takiego jak kontener IoC. W tym kontenerze masz wszystkie kontrolery, serwisy i repozytoria twojej aplikacji, jednak niepowiązane na stałe, ale posiadające wewnątrz siebie odniesienia pod postacią interfejsów np. XService (implementacja serwisu) ma pole o typie XRepository (interfejs).
Framework którego używasz ma wiedzę o tych wszystkich instancjach
@Jurigag
Dziękuję bardzo za rozjaśnie o co w tym chodzi. :)