Aktywne Wpisy

Tja88 +24
źródło: 20240628_234531
Pobierz
plusikdziczku +343
Mmm paczka w sobotę. Za co kocham Polskę? Za InPost, za Blik, za szybki i tani internet mobilny oraz stacjonarny. Niby żadne rewolucyjne odkrycia ale sprawiają, że życie jest lepsze
#inpost
#inpost
źródło: Screenshot_20240629-064552_InPost Mobile
Pobierz




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 klas które są stworzone wewnątrz kontenera i za pomocą wstrzykiwania zależności podstawia pod oznaczone pola faktyczne instancje klas. Czyli łączy kontrolery z serwisami i serwisy z repozytoriami w sposób dynamiczny dopiero po uruchomieniu
@Jurigag
Dziękuję bardzo za rozjaśnie o co w tym chodzi. :)