Fabrikmethode [ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]


Beispiel

Sie sind Betreiber eines Trockendocks und reparieren alle Arten von Schiffen. Auf Grund der unterschiedlichen Konstruktionen und Eigenarten der Schiffe wissen Sie nicht im Vorraus, wie bei der Reparatur eines speziellen Schiffes vorgegangen werden soll, noch welche Teile des Schiffs repariert werden müssen. Sie sind daher darauf angewiesen, dass jedes Schiff, das zur Reparatur angemeldet wird, einen Service Plan mitführt. Anhand des für jedes Schiff speziellen Plans können Sie die beschädigten Teile identifizieren und die Reparatur durchführen.

Das Java-Applet wurde mit der J2SE 1.5.0 entwickelt.




Beschreibung

[klick] zum vergrössern
 Abb. 2: Abstrakte Definitionen des Beispiels

Das Beispiel verwendet das FactoryMethod-Pattern zur Erzeugung von speziellen Hilfsobjekten. Die abstrakte «Creator»-Klasse ist hier die Klasse Ship. Sie definiert den Zugriff auf das Hilfsobjekt ShipServicePlan, dem «Product»:

  public abstract class Ship
  {
    public abstract ShipServicePlan createShipServicePlan();
  }

Die Klasse ShipServicePlan definiert als «Product» einige Methoden, mit denen ein Schiff manipuliert werden kann. Diese Methoden werden von dem Client, dem RepairDock, verwendet (s. Abb. 2, 3):

  public class RepairDock
  {
    private ShipServicePlan itsServicePlan;

    public void repairShip( Ship ship ) {
      itsServicePlan = ship.createShipServicePlan();
    }

    public String[] getPartsToRepair(){
      return itsServicePlan.getNeedOfRepairParts();
    }

    public void executeRepair(){
      itsServicePlan.repair();
      itsServicePlan	= null;
    }
  }
Der Client operiert also ausschließlich auf den abstrakten Definitionen, die durch den «Creator» und dem «Product» gegeben sind. Damit kann der Client beliebige Subklassen bearbeiten (s. Abb. 3, 4).

[klick] zum vergrössern [klick] zum vergrössern
 Abb. 3: Hierarchie ShipServicePlan

 Abb. 4: Hierarchie Ship


[ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]
Stand: 31.03.2005, Autor: Jens Günther