Factory (Fabrikmethode)

Es gibt Situation, in denen möchte man die Erzeugung neuer Objekte nicht im Konstruktor einer Klasse durchführen weil man z.Bsp.

  • Zusätzliche Verwaltungsaufgaben durchführen möchte (z.Bsp. Registrierung des Objekts)
  • Nicht mehr benötigte Objekte wieder verwenden möchte ( z.Bsp. Datenbankverbindungen)
  • Die Wahl haben möchte Unterschiedliche Spezialisierungen einer Klasse oder die Implementierung einer Schnittstelle nutzen möchte.

Dieser Anwendungsfall wird mit dem Entwurfsmuster "Factory" (Fabrikmethode) beschrieben. 

Verwendung

Eine Fabrikmethode

  • erzeugt bei jedem Aufruf neue Objekte
  • unterbindet den direkten Zugriff auf die Konstruktoren einer Klasse

Eine Fabrikmethode (Factory) besteht typischer Weise aus

  • einem privaten Konstruktor
  • einer öffentlichen statischen Methode die den privaten Konstruktor nutzt

Kategorie

Eine Fabrikmethode (Factory) gehört zur Kategorie der Erzeugungsmuster (Creational Pattern).

UML Diagramm

Naive Javaimplementierung

/**
 * Einfache Implementierung der Fabrikmethode (Factory)
 */
public class Factory {
     /**
     * privater Konstruktor der nur innerhalb der Klasse
     * aufgerufen werden kann
     */
    private Factory() {
      // Individuelle Initialisierung erfolgt hier
    }
     /**
     * Erzeugen der Objekte.
     */    
   public static Factory getInstance() {
        // Vorarbeiten
        instanz = new Factory();
        // Nacharbeiten
        return instanz;
    }}