Facade = Fassade

Die Fassade bietet eine einheitliche und meist vereinfachte Schnittstelle zu einer Menge von Schnittstellen eines Programmcodes. Einfacher ausgedrückt geht es darum, die Komplexität vom Anwender fern zu halten und sie so zu reduzieren. Zumindest ist das einer der Hauptvorteile. Daneben kann man aber auch manipulativ Methoden einer Klasse "entfernen" - wie das folgende Beispiel zeigt.

class BallKlasse {
	public $farbe;
	public $groesse;
	protected $preis = 0;
	
	public function anmalen($farbe) {
		$this->farbe = $farbe;
	}
	
	public function aufpumpen($luftmenge) {
		$this->groesse = $luftmenge;
	}
	
	public function beschreibe () {
		$beschreibung = "Die Farbe ist ".$this->farbe."\n";
		$beschreibung .= "Die Groesse ist ".$this->groesse."\n";
		$beschreibung .= "Der Preis ist ".$this->preis."\n";
		return $beschreibung;
	}
	
	protected function preisaendern() {
		$this->preis++;
	}
}

final class SportFacade {
	
    public function __construct() { }

    public function useBall($farbe, $luftmenge) {
    
        $ball = new BallKlasse();

       	$ball->anmalen($farbe);
       	$ball->aufpumpen($luftmenge);
       	
       	return $ball->beschreibe();
    }
}

$sports = new SportFacade();
echo $sports->useBall('weiss', 1);
// Die Farbe ist weiss
// Die Groesse ist 1
// Der Preis ist 0

In unserer Fassadenklasse könnten also noch viel mehr Methoden zum Erzeugen von Objekten und nutzen deren Methoden drinstecken. Dies ist, meiner Meinung nach, mit Fassade gemeint :)

Kommentare