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!