Designpatterns
Factory Pattern
Das Factory Pattern kapselt die Objekterzeugung in einer zentralen Methode und fördert flexible, erweiterbare Softwarearchitektur.
Was ist das Factory Pattern?
Das Factory Pattern ist ein Entwurfsmuster, das dafür sorgt, dass Objekte nicht direkt mit new
erzeugt werden, sondern über eine zentrale Methode (eine sogenannte Fabrikmethode).
Es „versteckt“ die Erstellung von Objekten und gibt dir flexiblen, sauberen Code, der leicht erweiterbar ist.
Warum braucht man das?
Stell dir vor, du hast viele verschiedene Objekttypen, z. B. Auto
, Motorrad
, LKW
usw.
Wenn du überall im Code new Auto()
, new Motorrad()
schreibst, wird dein Code hart verdrahtet und schlecht wartbar.
Mit einer Fabrikklasse kannst du die Objekterstellung zentral steuern, z. B. anhand eines Strings, Typs oder Konfigurationswerts.
Vorteile des Factory Pattern
Vorteil | Bedeutung |
---|---|
Zentrale Objekterstellung | Neue Objekttypen an einer Stelle verwalten |
Einheitliche Schnittstelle | Du brauchst dir keine Details zur Objekterzeugung merken |
Austauschbarkeit | Du kannst leicht auf andere Unterklassen umstellen |
Erweiterbarkeit | Neue Klassen hinzufügen ohne bestehende Stellen zu ändern |
Beispiel: Fahrzeug-Fabrik
abstract class Fahrzeug {
abstract void fahre();
}
class Auto extends Fahrzeug {
@Override
void fahre() {
System.out.println("Auto fährt");
}
}
class Motorrad extends Fahrzeug {
@Override
void fahre() {
System.out.println("Motorrad fährt");
}
}
Die Fabrik
class FahrzeugFabrik {
static Fahrzeug erzeuge(String typ) {
if (typ.equals("Auto")) return new Auto();
if (typ.equals("Motorrad")) return new Motorrad();
return null; // oder: throw new IllegalArgumentException()
}
}
Verwendung
Fahrzeug f1 = FahrzeugFabrik.erzeuge("Auto");
Fahrzeug f2 = FahrzeugFabrik.erzeuge("Motorrad");
f1.fahre(); // Ausgabe: Auto fährt
f2.fahre(); // Ausgabe: Motorrad fährt
Der Vorteil: Du musst nicht wissen, wie
Auto
oder Motorrad
genau aufgebaut ist – du bekommst einfach das passende Objekt geliefert.Mit dem Factory Pattern bestellst du ein Objekt – wie in einer Pizzeria.
Du sagst nur, was du willst („Auto“), und die Fabrik liefert das fertige Produkt
Du sagst nur, was du willst („Auto“), und die Fabrik liefert das fertige Produkt