Middle
Was ist eine Fassade (Facade)?
sobes.tech KI
Antwort von AI
Der Fassade ist ein strukturelles Entwurfsmuster, das eine einheitliche Schnittstelle für eine Reihe von Schnittstellen in einem Teilsystem bereitstellt. Es definiert eine hochstufige Schnittstelle, die die Nutzung des Teilsystems vereinfacht, ohne in dessen interne Struktur einzutauchen.
Die Hauptziele der Fassade:
- Vereinfachung: Verbirgt die Komplexität des Teilsystems hinter einer einfachen Schnittstelle.
- Reduzierung der Kopplung: Der Client-Code interagiert nur mit der Fassade, nicht direkt mit den Komponenten des Teilsystems.
- Kapselung: Änderungen an der internen Struktur des Teilsystems haben weniger Einfluss auf den Client-Code, der die Fassade verwendet.
Beispiel für die Verwendung:
Stellen Sie sich ein komplexes Bestellsystem in einem Online-Shop vor, das die Teilsysteme Inventar, Zahlungen, Versand und Benachrichtigungen umfasst. Anstatt dass der Kunde die Methoden jedes dieser Teilsysteme separat aufruft, kann eine OrderProcessor-Fassade erstellt werden.
// Beispiel für eine Struktur ohne Fassade
// Der Client-Code wird komplex
// inventorySystem.checkStock(item);
// paymentSystem.processPayment(amount);
// shippingSystem.arrangeShipping(address);
// notificationSystem.sendConfirmation(email);
// Beispiel für eine Struktur mit Fassade
public class OrderProcessorFacade {
private InventorySystem inventorySystem;
private PaymentSystem paymentSystem;
private ShippingSystem shippingSystem;
private NotificationSystem notificationSystem;
public OrderProcessorFacade() {
this.inventorySystem = new InventorySystem();
this.paymentSystem = new PaymentSystem();
this.shippingSystem = new ShippingSystem();
this.notificationSystem = new NotificationSystem();
}
public void placeOrder(Item item, double amount, String address, String email) {
// Lagerbestand prüfen
inventorySystem.checkStock(item);
// Zahlung verarbeiten
paymentSystem.processPayment(amount);
// Versand organisieren
shippingSystem.arrangeShipping(address);
// Benachrichtigung senden
notificationSystem.sendConfirmation(email);
// Zusätzliche Logik oder Fehlerbehandlung
}
}
// Client-Code mit Verwendung der Fassade
// OrderProcessorFacade orderProcessor = new OrderProcessorFacade();
// orderProcessor.placeOrder(item, amount, address, email);
// Für den Client wird die Interaktion erheblich vereinfacht