Ein Interface beschreibt, welche Methoden eine Implementierung anbieten muss. Ein Service kann von diesem Vertrag abhängen, ohne die konkrete Technik zu kennen. Komposition bedeutet, dass Objekte ihre benötigten Helfer bekommen und mit ihnen zusammenarbeiten. So kann derselbe Verarbeitungsablauf auf dem Desktop und auf dem Server verschiedene Speicher verwenden.
01Einen Vertrag benennen
JobStore bietet save an. Der Vertrag spricht über die Aufgabe, nicht über SQL oder eine Datei. ConsoleStore implementiert ihn und schreibt das Ergebnis nur in die Konsole.
public class Main {
interface JobStore { void save(String id); }
static final class ConsoleStore implements JobStore {
public void save(String id) { System.out.println("Saved: " + id); }
}
static final class BatchService {
private final JobStore store;
BatchService(JobStore store) { this.store = store; }
void create(String id) { store.save(id); }
}
public static void main(String[] args) {
new BatchService(new ConsoleStore()).create("job-1");
}
}
Starten / prüfen
java Main.java02Die Abhängigkeit übergeben
BatchService bekommt JobStore im Konstruktor. Der Aufrufer entscheidet, welche Implementierung verwendet wird. Der Service erzeugt nicht versteckt einen Datenbankadapter. Das erleichtert kleine Tests.
03Die Grenze realistisch lesen
Die Beispielimplementierung speichert nichts dauerhaft. Sie beweist nur, dass der Service über einen austauschbaren Vertrag arbeitet. PDF Batch Studio verwendet echte Repository-Adapter und definiert zusätzlich Zustands- und Fehlerregeln.
Saved: job-1
Deine Übung
Erstelle eine MemoryStore-Implementierung, die IDs in einer ArrayList hält. Muss BatchService geändert werden?
Lösung mit Erklärung anzeigen
MemoryStore implementiert dieselbe save-Methode und fügt die ID einer Liste hinzu. BatchService bleibt unverändert. Nur die Verdrahtung in main verwendet den neuen Speicher. Die gemeinsame Schnittstelle ist der Grund für den Austausch.
Projektbezug und Quellen
Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.