Dependency Injektion
Ein Framework bzw. die Umgebung setzt von aussen die abhängigen Objekte.
Vorteile
- Die Klasse selber braucht kein Wissen über die Umgebung haben. Sie kann daher auch in anderen Umgebungen, z.B. in einer Testumgebung, laufen.
Alternativen:
- Singletons: Die Klasse muss aber die ganzen Singletons kennen → Umgebungsabhängigkeit
Links
- WP
- Object mentor über Dependency Injection
-
- Rigorose Anwendung des Open Closed Principle und dem Liskov Substitution Principle
- JSR 330
-
Definiert Annotationen wie @Inject, damit eine Umgebung diese Parameter injezieren kann:
Bsp
class Stopwatch
{
final TimeSource timeSource;
@Inject Stopwatch(TimeSource TimeSource)
{
this.TimeSource = TimeSource;
}
void start() { ... }
long stop() { ... }
}