Dependency injection 1. rész

Bejegyzés dátuma:
2014-04-04
A DI (dependency injection) magyarul csak csúnyán "függőségi befecskendezés" a DIP (Dependency Inversion Principle) objektum orientált tervezési elvhez tartozó egyik technika. A DIP fő célja az osztályok vagy programrészek közötti merev kapcsolatok csökkentése. A konkrét programozási példák előtt egy egyszerű elméleti példával írom le magát a dependency injection-t:
Képzeld el, hogy egy nagyvállalatnál dolgozol, ahol a munkatársaid és te nagyon sokat utaztok. Általában az utazások repülővel történnek és a repülőtérre való kiutazás pedig taxival. Számos utazási iroda létezik, aki lebonyolítja és szervezi a teljes utazási folyamatot. Ismered ezeknek az irodáknak a telefonszámát és az egész rendelési folyamatot, így egy utazás tervezése a következő folyamatokból áll:

Első eset:

  • meghatározod az utazás célját, az indulási dátumot és időpontot
  • felhívod az utazási irodát és összegyűjtöd az utazással kapcsolatos információkat
  • felhívod az adott taxiállomást és időpontot egyeztetsz, hogy mikor menjenek érted és vigyenek ki a repülőtérre  (itt a taxi állomás közvetlenül is felveheti a kapcsolatot a repülőtérrel, hogy pontosan megtervezze az útját)
  • megveszed a jegyet, beülsz a taxiba és már úton is vagy

Ha a nagyvállalat, ahol dolgozol hirtelen meggondolja magát és utazási irodát vált és ezzel együtt megváltozik az utazás szervezés módjai is, a következőkkel találod szembe magad:

  • Az új iroda és a szervezési folyamata teljesen más. Mondjuk nem lehet telefonon leadni egy rendelést, hanem csak online módon fogadja el a foglalásokat.
  • Az eddig megszokott hagyományos telefonos ügyintézési folyamat teljesen megváltozik.

Most tegyük fel, hogy nem csak te szoktál utazni, hanem a nagyvállalatnál még rajtad kívül nagyon sokan és nekik is követniük kell a változtatás miatt az új folyamatot. Könnyen látható, hogy ez a változtatás nagyon sok időbe kerülhet szervezeti szinten.

Második eset:

Most tegyük fel, hogy a folyamat egy picit más. Van egy adminisztrációs részleged. Ha utazni szeretnél, egyszerűen felhívod telefonon ezt a részleget és a hagyományos úton elintézed az utazást. Majd ez a részleg lesz felelős a konkrét utazás megszervezésével. Ő hívja fel az utazási irodákat, foglalja le helyetted az időpontot és egyeztet a taxi állomásokkal. Ha a nagyvállalat, ahol dolgozol az eddigi megszokott utazási iroda helyett egy másikat választ, az adminisztrációs részleg lesz a felelős a folyamat újraszervezésével. Te és a többi dolgozó erről semmit sem fog tudni és nem is kell tudnia, a változások őket nem fogják érinteni.

Dependency injection:

Mindkét esetben te vagy az ügyfél (client) és az utazási irodák szolgáltatásától függsz (services). A második eset azonban eltérő:

  • Nem szükséges egyetlen egy utazási irodát sem ismerned, sem a telefonszámukat, sem a pontos helyüket és elérhetőségüket, mivel ezt az adminisztrációs részleg teszi meg helyetted.
  • Nem kell ismerned a kommunikáció módját és az utazás szervezését az iroda és az adminisztrációs részleg között
  • A szolgáltatások, amitől te függsz egy külső kezelő biztosítja neked (adminisztrációs részleg a vállalaton belül) és nem kell semmivel sem foglalkoznod ha a szolgáltató valamilyen okból megváltozik (utazási iroda)