SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Dependency Injection
Unser Code soll schöner werden
Dieser Vortrag kann
Spuren von Java enthalten!
Wayne interessierts?
Schöner = Modularer
Designprinzip
Globale Variablen sind
schlecht. Singletons sind
globale Variablen.
Global Mutable State
Karl und die Kreditkarte
Karl
Kreditkarte: Testbarkeit
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
Karl hat Angst um sein Geld.
Kreditkarte: Fehler 1
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
java.lang.NullPointerException at CreditCard.java:42
Karl fragt lieber mal einen Kollegen.
Kreditkarte: Fehler 2
CreditCardProcessor.init(...);
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
java.lang.NullPointerException at CreditCardProcessor.java:146
Karl fragt lieber noch mal einen Kollegen.
Kreditkarte: Fehler 3
OfflineQueue.start();
CreditCardProcessor.init(...);
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
java.lang.NullPointerException at OfflineQueue.java:22
Karl traut sich nicht noch mal zu fragen und liest den
Code von OfflineQueue duch.
Kreditkarte: Die API lügt
Database.connect(...);
OfflineQueue.start();
CreditCardProcessor.init(...);
CreditCard cc;
cc = new CreditCard("12345678901234");
cc.charge(100);
Kreditkarte: Globaler Zustand
Database.connect(...);
OfflineQueue.start();
CreditCardProcessor.init(...);
CreditCard cc;
cc = new CreditCard("12345678901234");
System.out.println(cc.balance); // 100
UserManager.update();
System.out.println(cc.balance); // 120
Dependency Injection
Dependency Injection
Dependency Injection
Karl versucht
weniger Singletons
zu verwenden
Anderswo im Code
class OrderProcessor {
private CreditCardProcessor ccp;
public void OrderProcesser(CreditCardProcessor ccp){
this.ccp = ccp;
}
public void process(Order order){
CreditCard cc = new CreditCard(order.creditCardNumber, this.ccp);
cc.charge(order.sum());
...
}
}
Aufbau des Graphen vs.
Geschäftslogik
Dependency Injection
class Main {
public static void main(String[] args){
Database db = new Database();
OfflineQueue oq = new OfflineQueue(db);
CreditCardProcessor cpp = new CreditCardProcessor(oq);
CreditCard cc = new CreditCard("12345678901234", ccp);
}
}
Schrittweiser Aufbau des
Objektgraphen
4 Gruppiert nach den Lebenszeiten der Objekte
4 möglich durch:
4 Dependency Injection Framworks
4 Assembler-Klassen selber bauen
Don't call us, we call you!
Inversion of Control
console.log("test") // kein IoC
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello world'); // IoC
});
Beispiel IoC Allgemein
Dependency Injection ist
Inversion of Control beim
Aufbau des Objektgraphen
Zum Schluss der ganze Rest
4 Dependency Injection != Dependency Inversion
4 DI-Arten
4 Constructor Injection FTW
4 Setter Injection (manchmal unvermeidbar)
4 Interface Injection (machen manche DI-Container,
eher meiden)
4 Service Locator aka. Context
Quellen
4 Vorträge: Google Clean Code Talks (Youtube Playlist)
4 Artikel: Martin Fowler - "Inversion of Control
Containers and the Dependency Injection pattern"
4 Buch: Robert C. Martin - "Clean Code"

Más contenido relacionado

Destacado

Presentación slidshare
Presentación slidsharePresentación slidshare
Presentación slidsharenatalyruiz98
 
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)Maria Eugenia Plascencia
 
what’s wrong with the philippine higher education
 what’s wrong with the philippine higher education what’s wrong with the philippine higher education
what’s wrong with the philippine higher educationiBoP Asia
 
Wissenskommunikation
Wissenskommunikation Wissenskommunikation
Wissenskommunikation viviannapoles
 
Interkulturelles Lernen - Auswahl von Materialien
Interkulturelles Lernen - Auswahl von MaterialienInterkulturelles Lernen - Auswahl von Materialien
Interkulturelles Lernen - Auswahl von MaterialienMonika_Heusinger
 
Diaporama_Durch Karten die Welt verstehen
Diaporama_Durch Karten die Welt verstehenDiaporama_Durch Karten die Welt verstehen
Diaporama_Durch Karten die Welt versteheneuroallemand
 
Portafolio de evaluación
Portafolio de evaluaciónPortafolio de evaluación
Portafolio de evaluaciónNoranappa-1
 
Como hacer una presentacion en cinco minutos
Como hacer una presentacion en cinco minutosComo hacer una presentacion en cinco minutos
Como hacer una presentacion en cinco minutosTefany Sarmiientoo
 
Television educativa monica villa
Television educativa monica villaTelevision educativa monica villa
Television educativa monica villaMonica Bellucci
 
Qo ar tp 2014 nomenclatura
Qo ar tp 2014 nomenclaturaQo ar tp 2014 nomenclatura
Qo ar tp 2014 nomenclaturaNoranappa-1
 

Destacado (20)

Presentación slidshare
Presentación slidsharePresentación slidshare
Presentación slidshare
 
Las galaxias
Las galaxiasLas galaxias
Las galaxias
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)
2014 pub apoyo_orienta_guia_tdah_profesorado[2 (1)
 
what’s wrong with the philippine higher education
 what’s wrong with the philippine higher education what’s wrong with the philippine higher education
what’s wrong with the philippine higher education
 
Wissenskommunikation
Wissenskommunikation Wissenskommunikation
Wissenskommunikation
 
Interkulturelles Lernen - Auswahl von Materialien
Interkulturelles Lernen - Auswahl von MaterialienInterkulturelles Lernen - Auswahl von Materialien
Interkulturelles Lernen - Auswahl von Materialien
 
Mulher
MulherMulher
Mulher
 
IFES: Online-Werbung in Österreich 2012
IFES: Online-Werbung in Österreich 2012IFES: Online-Werbung in Österreich 2012
IFES: Online-Werbung in Österreich 2012
 
Hardware
HardwareHardware
Hardware
 
Portafolio 1
Portafolio 1Portafolio 1
Portafolio 1
 
Diaporama_Durch Karten die Welt verstehen
Diaporama_Durch Karten die Welt verstehenDiaporama_Durch Karten die Welt verstehen
Diaporama_Durch Karten die Welt verstehen
 
Edad contemporánea
Edad contemporáneaEdad contemporánea
Edad contemporánea
 
Gestion
GestionGestion
Gestion
 
Portafolio de evaluación
Portafolio de evaluaciónPortafolio de evaluación
Portafolio de evaluación
 
Como hacer una presentacion en cinco minutos
Como hacer una presentacion en cinco minutosComo hacer una presentacion en cinco minutos
Como hacer una presentacion en cinco minutos
 
El internet
El internetEl internet
El internet
 
Television educativa monica villa
Television educativa monica villaTelevision educativa monica villa
Television educativa monica villa
 
19inferencias
19inferencias19inferencias
19inferencias
 
Qo ar tp 2014 nomenclatura
Qo ar tp 2014 nomenclaturaQo ar tp 2014 nomenclatura
Qo ar tp 2014 nomenclatura
 

Más de hybr1s

Asyl und Flüchtlinge in Siegen-Wittgenstein
Asyl und Flüchtlinge in Siegen-WittgensteinAsyl und Flüchtlinge in Siegen-Wittgenstein
Asyl und Flüchtlinge in Siegen-Wittgensteinhybr1s
 
Minimalismus
MinimalismusMinimalismus
Minimalismushybr1s
 
Hasi-Talk: Blender
Hasi-Talk: BlenderHasi-Talk: Blender
Hasi-Talk: Blenderhybr1s
 
Spacehack
SpacehackSpacehack
Spacehackhybr1s
 
Religion in Computerspielen
Religion in ComputerspielenReligion in Computerspielen
Religion in Computerspielenhybr1s
 
Webvideo Culturers
Webvideo CulturersWebvideo Culturers
Webvideo Culturershybr1s
 
Social Engineering
Social EngineeringSocial Engineering
Social Engineeringhybr1s
 
Batman
BatmanBatman
Batmanhybr1s
 
LilyPond
LilyPondLilyPond
LilyPondhybr1s
 
Disney Prinzessinnen
Disney PrinzessinnenDisney Prinzessinnen
Disney Prinzessinnenhybr1s
 
Isee3 Reboot
Isee3 RebootIsee3 Reboot
Isee3 Reboothybr1s
 
Katastrophenmanagement
KatastrophenmanagementKatastrophenmanagement
Katastrophenmanagementhybr1s
 
Wlan-Sicherheit für Fortgeschrittene
Wlan-Sicherheit für FortgeschritteneWlan-Sicherheit für Fortgeschrittene
Wlan-Sicherheit für Fortgeschrittenehybr1s
 
Lovecraft & Cthulhu
Lovecraft & CthulhuLovecraft & Cthulhu
Lovecraft & Cthulhuhybr1s
 
“Eine CPU kann rechnen, aber ein DSP kann zaubern”
“Eine CPU kann rechnen, aber ein DSP kann zaubern”“Eine CPU kann rechnen, aber ein DSP kann zaubern”
“Eine CPU kann rechnen, aber ein DSP kann zaubern”hybr1s
 
Hybr1s über "Was ist Wissenschaft?"
Hybr1s über "Was ist Wissenschaft?"Hybr1s über "Was ist Wissenschaft?"
Hybr1s über "Was ist Wissenschaft?"hybr1s
 
Phil Krämer: WLAN #HACKING
Phil Krämer: WLAN #HACKINGPhil Krämer: WLAN #HACKING
Phil Krämer: WLAN #HACKINGhybr1s
 
Gutmensch oder Weltenretter
Gutmensch oder WeltenretterGutmensch oder Weltenretter
Gutmensch oder Weltenretterhybr1s
 
Return oriented programming
Return oriented programmingReturn oriented programming
Return oriented programminghybr1s
 
earthship biotecture
earthship biotectureearthship biotecture
earthship biotecturehybr1s
 

Más de hybr1s (20)

Asyl und Flüchtlinge in Siegen-Wittgenstein
Asyl und Flüchtlinge in Siegen-WittgensteinAsyl und Flüchtlinge in Siegen-Wittgenstein
Asyl und Flüchtlinge in Siegen-Wittgenstein
 
Minimalismus
MinimalismusMinimalismus
Minimalismus
 
Hasi-Talk: Blender
Hasi-Talk: BlenderHasi-Talk: Blender
Hasi-Talk: Blender
 
Spacehack
SpacehackSpacehack
Spacehack
 
Religion in Computerspielen
Religion in ComputerspielenReligion in Computerspielen
Religion in Computerspielen
 
Webvideo Culturers
Webvideo CulturersWebvideo Culturers
Webvideo Culturers
 
Social Engineering
Social EngineeringSocial Engineering
Social Engineering
 
Batman
BatmanBatman
Batman
 
LilyPond
LilyPondLilyPond
LilyPond
 
Disney Prinzessinnen
Disney PrinzessinnenDisney Prinzessinnen
Disney Prinzessinnen
 
Isee3 Reboot
Isee3 RebootIsee3 Reboot
Isee3 Reboot
 
Katastrophenmanagement
KatastrophenmanagementKatastrophenmanagement
Katastrophenmanagement
 
Wlan-Sicherheit für Fortgeschrittene
Wlan-Sicherheit für FortgeschritteneWlan-Sicherheit für Fortgeschrittene
Wlan-Sicherheit für Fortgeschrittene
 
Lovecraft & Cthulhu
Lovecraft & CthulhuLovecraft & Cthulhu
Lovecraft & Cthulhu
 
“Eine CPU kann rechnen, aber ein DSP kann zaubern”
“Eine CPU kann rechnen, aber ein DSP kann zaubern”“Eine CPU kann rechnen, aber ein DSP kann zaubern”
“Eine CPU kann rechnen, aber ein DSP kann zaubern”
 
Hybr1s über "Was ist Wissenschaft?"
Hybr1s über "Was ist Wissenschaft?"Hybr1s über "Was ist Wissenschaft?"
Hybr1s über "Was ist Wissenschaft?"
 
Phil Krämer: WLAN #HACKING
Phil Krämer: WLAN #HACKINGPhil Krämer: WLAN #HACKING
Phil Krämer: WLAN #HACKING
 
Gutmensch oder Weltenretter
Gutmensch oder WeltenretterGutmensch oder Weltenretter
Gutmensch oder Weltenretter
 
Return oriented programming
Return oriented programmingReturn oriented programming
Return oriented programming
 
earthship biotecture
earthship biotectureearthship biotecture
earthship biotecture
 

Dependency Injection