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

  • 123
Loading comments...

More from Hubert Zub