𝗦𝘁𝗿𝘂𝗸𝘁𝘂𝗿𝗲𝗹𝗹𝗲 𝗗𝗲𝘀𝗶𝗴𝗻-𝗠𝘂𝘀𝘁𝗲𝗿: 𝗙𝗮𝗰𝗮𝗱𝗲, 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁 𝘂𝗻𝗱 𝗣𝗿𝗼𝘅𝘆

Strukturelle Design-Muster helfen Ihnen dabei, Klassen und Objekte zu organisieren.

Heute behandeln wir die letzten drei Muster, um Ihr Toolkit zu vervollständigen.

𝟭. 𝗗𝗮𝘀 𝗙𝗮𝗰𝗮𝗱𝗲-𝗠𝘂𝘀𝘁𝗲𝗿 Die Facade vereinfacht komplexe Systeme. Sie stellt eine einzige, einfache Schnittstelle für eine Gruppe unübersichtlicher Klassen bereit.

Stellen Sie sich ein Kino vor. Um einen Film zu sehen, müssen Sie das Licht dimmen, den Projektor starten und die Vorhänge öffnen. Anstatt fünf verschiedene Systeme aufzurufen, rufen Sie nur eine Methode auf: theater.watch_movie().

Nutzen Sie es, wenn:

  • Sie ein komplexes Subsystem vereinfachen möchten.
  • Sie einen einzigen Einstiegspunkt für eine große API benötigen.
  • Sie die Clients von der internen Logik entkoppeln möchten.

𝟮. 𝗗𝗮𝘀 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁-𝗠𝘂𝘀𝘁𝗲𝗿 Flyweight spart Speicherplatz. Es ist nützlich, wenn Sie Tausende von ähnlichen Objekten haben.

Anstatt jedes Detail in jedem Objekt zu speichern, teilen Sie die Daten auf. Sie bewahren gemeinsam genutzte, unveränderliche Daten (intrinsischer Zustand) an einer Stelle auf. Einzigartige Daten (extrinsischer Zustand) halten Sie separat.

Nutzen Sie es, wenn:

  • Der Speicherverbrauch ein kritisches Problem darstellt.
  • Sie Millionen ähnlicher Objekte verwalten, wie etwa Zeichen in einem Texteditor oder Partikel in einem Spiel.
  • Sie Object Pooling verwenden möchten, um die Performance zu verbessern.

𝟯. 𝗗𝗮𝘀 𝗣𝗿𝗼𝘅𝘆-𝗠𝘂𝘀𝘁𝗲𝗿 Ein Proxy fungiert als Stellvertreter für ein anderes Objekt. Er sitzt zwischen dem Client und dem echten Objekt, um den Zugriff zu steuern.

Ein Proxy kann:

  • Lazy Loading: Laden Sie schwere Bilder erst dann, wenn ein Benutzer darauf klickt.
  • Zugriff steuern: Prüfen Sie, ob ein Benutzer die Berechtigung hat, eine Datenbank zu löschen.
  • Aktivitäten protokollieren: Verfolgen Sie, wer einen bestimmten Dienst nutzt.
  • Ergebnisse zwischenspeichern: Geben Sie gespeicherte Daten zurück, anstatt eine teure Logik auszuführen.

Nutzen Sie es, wenn:

  • Sie teure Operationen verzögern müssen.
  • Sie einen sensiblen Dienst schützen müssen.
  • Sie Logging oder Sicherheit hinzufügen möchten, ohne die ursprüngliche Klasse zu ändern.

𝗭𝘂𝘀𝗮𝗺𝗺𝗲𝗻𝗳𝗮𝘀𝘀𝘂𝗻𝗴

• 𝗔𝗱𝗮𝗽𝘁𝗲𝗿: Bringt inkompatible Systeme zur Zusammenarbeit. • 𝗕𝗿𝗶𝗱𝗴𝗲: Entkoppelt Abstraktion von der Implementierung. • 𝗖𝗼𝗺𝗽𝗼𝘀𝗶𝘁𝗲: Erstellt Baumstrukturen. • 𝗗𝗲𝗰𝗼𝗿𝗮𝘁𝗼𝗿: Fügt Verhalten hinzu, ohne Klassen zu modifizieren. • 𝗙𝗮𝗰𝗮𝗱𝗲: Vereinfacht komplexe Subsysteme. • 𝗙𝗹𝘆𝘄𝗲𝗶𝗴𝗵𝘁: Teilt Daten, um Speicher zu sparen. • 𝗣𝗿𝗼𝘅𝘆: Steuert den Zugriff auf Objekte.

Die goldene Regel: Nutzen Sie diese Muster, um Code wartbar zu machen. Nutzen Sie sie nicht nur, um anzugeben.

Als Nächstes beginnen wir mit der Serie der Behavioral Design Patterns.

Source: https://dev.to/mahdi0shamlou/mahdi-shamlou-structural-design-patterns-2026-facade-flyweight-proxy-production-examples-g5l