Service-Fassaden – Ein weiteres Entwurfsmuster leicht erklärt

Wo es vor nicht allzulanger Zeit schon einmal um Design Patterns (Entwurfsmuster) ging (Wir erinnerun uns an’s Singleton) will ich heute mal versuchen eine leicht verständliche Erklärung von Service-Fassaden zu geben. Eine Service-Fassade ist ein Entwurfsmuster – genauer gesagt ein Strukturelles Muster, da es eine Struktur abbildet (Das Singleton war ein Erzeugendes Muster, da es eine Struktur anlegt) – zur Darstellung einer Schnittstelle zu stark technischen Systemen die selten von außen angesprochen werden.

Die Fassade stellt nun Funktionen dieser Systeme zur Verfügung und verteilt eingehende Funktionsaufrufe an selbige.
Dadurch wird das Prinzip der Losen Kopplung unterstützt. Sprich, Schittstellen zwischen 2 Systemen werden nich hartkodiert sondern über eine Fassade geleitet die die Services der SubSysteme anderen Systemen zur Verfügung stellt. Ändert sich nun eines dieser SubSysteme, muss nur die Fassade angepasst werden und nicht das aufrufende System. Das Ändern der Fassade ist wesentlich leichter und ist im Regelfall schneller erledigt.

fascade

Ein Beispiel wäre etwa die Steuerung eines Roboters:
Nehmen wir an, der Roboter führt auf 4 Rädern, die einzeln über 4 Motoren angesteuert werden. Diese Motoren werden über Assemblerbefehle von einem Microcontroller angesteuert. Statt nun alle 4 Motoren einzeln durch aufwändiges Registergeschubse anzusprechen, würde eine Fassade Funktionen zur Verfügung stellen wie “FahreGeradeaus(10)” die dann auf die technische Ebene des Roboters runterkommuniziert, dass Motor 1-4 für ca 10 Sekunden angeworfen werden sollen.
Wenn wir nun einen neuen Microcontroller in unseren Roboter einbauen der die Motoren über andere Register anspricht müssen wir nicht unser Steuerungsprogramm an 100 Stellen anpassen sondern nur die Funktion “FahreGeradeaus()” anpassen.

Wir sind in unserer Entwicklung also flexibler, können Systemschnittstellen leicht wiederbenutzen und können diese ggf schnell anpassen.

Toll oder? 😉

Leave a Reply

Your email address will not be published. Required fields are marked *