Rufen Sie uns nicht an, wir rufen Sie an

Das Hollywood - Prinzip “rufen Sie uns nicht an, wir rufen Sie an” hilft uns dabei, die Komplexität unserer Software - Systeme zu vereinfachen und die Anwendungen testbar zu halten. Die Idee dahinter ist einfach aber bestechend. Wir vermeiden es jene Objekte, von denen die aktuelle Klasse abhängt, selbst zu erstellen.

Injection

Wir geben die Kontrolle über den Zusammenbau unserer Objekte ab. Wir geben die Kontrolle jemandem, der mehr über den Context, in dem unsere Anwendung läuft, weiss. Wir begnügen uns damit zu wissen, welche Funktionen ein Objekt, mit dem wir zusammenarbeiten, hat. Es interressiert uns nicht, wie dieses Objekt erzeugt wird. Wir lassen uns diese Abhängigkeiten einimpfen.

Dieses Impfen geschieht in unseren Klassen durch die Annotation @Inject. Ein Beispiel dafür wäre folgender Code aus dem REST Beitrag:

public class UserEndpoint {
    @Inject
    UserDao userDao;
}

An anderer Stelle ist dann eine @Named Annotation zu finden.

@Named
public class UserDao implements DataAccessObject<User> {
//...

}

Die @Named Annotation benennt jene Objekte, die als Abhängigkeiten in andere Object “eingeimpft” werden können.