Zróbmy sobie
Dependency Injection
w dziesięć minut
(dobra, może dwadzieścia)
Hubert Zub, meet.js Białystok #13
Stwórzmy sobie aplikację.
- JavaScript rzecz jasna
- Środowisko node.js
- Zero frameworków
- ECMAScript 2015 + klasy
Pokodujmy!
(albo poudawajmy)
Ups
Kod jest silnie powiązany klasami
(po jankesku: tightly-coupled)
Z naszym obecnym kodem...
-
...nie możemy napisać testów serio jednostkowych
-
Przydałby się mechanizm do wstawiania obiektów-atrap
-
Kolejny problem: co zrobić, jeśli zechcemy dołączać jakieś zależności dynamicznie w trakcie działania aplikacji?
-
W sumie jeszcze jeden problem: co jeśli chcemy skorzystać z jakiejś klasy (bo sobie ściągnęliśmy ją z internetu), ale ścieżka do pliku ją zawierającego jest długa albo nieznana?
Zróbmy sobie wstrzykiwanie zależności!
(po amerykanersku: Dependency Injection)
Co zyskaliśmy?
- Lans
- Testowalność
- Porządek (może)
- Możliwość korzystania z klas po ich nazwach, nie ścieżkach (serio zbawienne w dużych projektach)
- Łatwe zamienianie zależności klas
Co dalej?
- Dla uproszczenia zrobiliśmy singletony, ale czemu by nie rozszerzyć tego o factory obiektów, dekoratory etc.
- Druga warstwa biblioteki - taka służąca do mocków klas!
"Po co to pisać, pewnie ktoś już zrobił lepsze"
- pewnie że tak!
bottle.js
https://github.com/young-steveo/bottlejs
Dziękuję!
Dependency injection w 10 minut
By Hubert Zub
Dependency injection w 10 minut
- 1,277