Factory = Fabrik

Das größte Problem in der OOP ist zumeist eine zu feste Verkopplung. Methoden und Klassen in einem Teil des Systems bauen zu stark auf Verhaltensweisen und Strukturen in anderen Methoden und Klassen in anderen Teilen des Systems auf. In großen Systemen baut oft eine große Menge Code auf wenigen Schlüsselklassen auf. Schwierigkeiten treten oft dann auf, wenn wir diese Klassen verändern müssen. Hier ist das Factory-Muster hilfreich.

Das Factory-Muster ist eine Klasse, die Methoden hat, die für uns Objekte erzeugt. Anstatt direkt neue Objekte mittels new zu erzeugen, lassen wir die Factory-Klasse sie erzeugen. Auf diese Weise können wir, wenn wir die erzeugten Objekte verändern wollen, einfach nur das Factory verändern. Der komplette Code, der das Factory verwendet, verändert sich automatisch. Ist doch cool :)

class Ball { 
	protected $farbe;
	
	public function __construct($parameter) {}
		
	public  function farbe($farbe) {
     	$this->farbe = "Die Farbe ist ".$farbe;
     	
     	return $this->farbe;
     }	
}

 class Factory
 {
      static public function setClass($class, $parameter = null) {
          if (! is_string($class) || ! strlen($class)) {
              throw new exception('Die Angabe einer Klasse braucht eine Zeichenkette');
          }
         return new $class($parameter = null);
     }
 }
 
 $ball = Factory::setClass('Ball');
 echo $ball->farbe("weiss");
 // Die Farbe ist weiss

Kommentare