Facade Pattern
Was ist das Facade-Muster?
Das Facade-Muster (Fassaden-Muster) ist ein Entwurfsmuster, das dazu dient, ein komplexes System hinter einer einfachen Schnittstelle zu verstecken. Es bietet einen zentralen Einstiegspunkt, über den man auf mehrere Klassen oder Funktionen eines Subsystems zugreifen kann.
Beispiel aus dem Alltag
Stell dir ein Smart Home System vor:
- Es gibt Lichtsteuerung, Heizung, Sicherheitssystem, Musiksteuerung usw.
- Statt jede Komponente einzeln zu bedienen, gibt es eine zentrale App → das ist die Fassade.
Mit einem Klick kannst du z. B. den „Abwesend“-Modus aktivieren:
- Licht aus
- Heizung runter
- Alarmanlage an
→ Alles über eine einfache Schnittstelle, obwohl intern viele Dinge passieren.
Aufbau in Java (vereinfacht)
// Subsystem-Klassen (könnten auch viel komplexer sein)
class Licht {
void ausschalten() { System.out.println("Licht aus"); }
}
class Heizung {
void energiesparen() { System.out.println("Heizung im Energiesparmodus"); }
}
class Alarmanlage {
void aktivieren() { System.out.println("Alarmanlage an"); }
}
Die Fassade:
// Die zentrale Steuerung – versteckt die Komplexität des Subsystems
class SmartHomeFassade {
private Licht licht = new Licht();
private Heizung heizung = new Heizung();
private Alarmanlage alarm = new Alarmanlage();
void aktiviereAbwesenheitsmodus() {
licht.ausschalten();
heizung.energiesparen();
alarm.aktivieren();
}
}
Beispielhafte Nutzung:
class Main {
public static void main(String[] args) {
SmartHomeFassade smartHome = new SmartHomeFassade();
// Nur ein einfacher Aufruf nötig:
smartHome.aktiviereAbwesenheitsmodus();
// Ausgabe:
// Licht aus
// Heizung im Energiesparmodus
// Alarmanlage an
}
}
Vorteile des Facade-Musters:
Vorteil | Bedeutung |
---|---|
Vereinfachte Schnittstelle | Benutzer müssen das komplexe System nicht im Detail kennen |
Lose Kopplung | Außenwelt kennt nur die Fassade, nicht das Innenleben |
Bessere Wartbarkeit | Änderungen am Subsystem müssen nicht überall angepasst werden |
Klare Struktur | Komplexität wird gekapselt, Code bleibt übersichtlich |
→ Ideal, um Komplexität zu verstecken und die Nutzung zu erleichtern.
MVC-Modell (Model-View-Controller)
Das MVC-Modell teilt eine Anwendung in Datenmodell, Benutzeroberfläche und Steuerung auf – für bessere Wartbarkeit und Struktur.
Objektorientierte Programmierung
Diese Kategorie bietet dir eine strukturierte Zusammenfassung zur objektorientierten Programmierung mit Java-Beispielen – ideal zur Vorbereitung auf die Abschlussprüfung Teil 2 (AP2) für Fachinformatiker Anwendungsentwicklung.