Dependency injection 1. rész

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)
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter


A bejegyzés kategóriája:Tervezési minták and tagged . Vedd fel a kedvencek közé: link.A hozzászólások és a trackbackek is jelenleg le vannak zárva.