Dies ist ein kurzer Artikel über Designmuster in Java. Es wird keine Musterimplementierungen geben, sondern nur eine Liste von Mustern in Java zusammen mit einer kurzen Beschreibung jedes Musters. Für diejenigen, die bereits mit dem Thema vertraut sind, wird dies als Rezension und Zusammenfassung hilfreich sein. Umgekehrt profitieren diejenigen, die sich zum ersten Mal mit Mustern befassen, davon, sich einen ersten Überblick über das Thema zu verschaffen, bevor sie tiefer in die Materie einsteigen. Entwurfsmuster in Java [Teil 1] - 1 Designmustersind fertige Lösungen für häufig auftretende Programmieraufgaben. Es handelt sich nicht um eine Klasse oder Bibliothek, die mit einem Projekt verbunden werden kann. Es ist etwas mehr. Für die jeweilige Aufgabenstellung geeignete Entwurfsmuster werden jeweils konkret umgesetzt. Sie sollten bedenken, dass ein Entwurfsmuster bei falscher Anwendung oder für eine ungeeignete Aufgabe viele Probleme verursachen kann. Ein richtig angewendetes Muster kann Ihnen jedoch dabei helfen, Aufgaben einfach und unkompliziert zu erledigen.

Arten von Mustern:

  • schöpferisch
  • strukturell
  • Verhalten
Erstellungsmuster stellen Initialisierungsmechanismen bereit, mit denen Sie Objekte auf bequeme Weise erstellen können. Strukturmuster definieren Beziehungen zwischen Klassen und Objekten und ermöglichen ihnen die Zusammenarbeit. Verhaltensmuster werden verwendet, um die Interaktion zwischen Entitäten zu vereinfachen.

Kreativ:

  • Singleton – beschränkt die Erstellung einer Klasse auf eine einzelne Instanz und bietet Zugriff auf diese einzelne Instanz.

  • Factory – wird verwendet, wenn wir eine Oberklasse mit mehreren Unterklassen haben und eine Unterklasse basierend auf der Eingabe zurückgeben müssen.

  • Abstrakte Fabrik – nutzt eine Superfabrik, um Fabriken zu erstellen, die wir dann zum Erstellen von Objekten verwenden.

  • Builder – wird zum Erstellen komplexer Objekte aus einfachen Objekten verwendet. Aus einem kleinen, einfachen Objekt entsteht nach und nach ein großes Objekt.

  • Prototyp – hilft, die Leistung beim Erstellen doppelter Objekte zu verbessern; Anstatt ein neues Objekt zu erstellen, wird ein Klon eines vorhandenen Objekts erstellt und zurückgegeben.

Strukturell:

  • Adapter – ein Konverter zwischen zwei inkompatiblen Objekten. Mit dem Adaptermuster können wir zwei inkompatible Schnittstellen kombinieren.

  • Zusammengesetzt – verwendet eine Klasse zur Darstellung einer Baumstruktur.

  • Proxy – stellt die Funktionalität einer anderen Klasse bereit.

  • Fliegengewicht – verwendet Objekte wieder, anstatt eine große Anzahl ähnlicher Objekte zu erstellen.

  • Facade – stellt eine einfache Schnittstelle für einen Client bereit, der die Schnittstelle zur Interaktion mit dem System verwendet.

  • Bridge – macht bestimmte Klassen unabhängig von Klassen, die eine Schnittstelle implementieren.

  • Decorator – fügt einem vorhandenen Objekt neue Funktionalität hinzu, ohne sich an dessen Struktur zu binden.

Verhalten:

  • Vorlagenmethode – definiert einen grundlegenden Algorithmus und ermöglicht Nachkommen, einige Schritte des Algorithmus zu überschreiben, ohne seine Gesamtstruktur zu ändern.

  • Mediator – stellt eine Zwischenklasse bereit, die die gesamte Kommunikation zwischen verschiedenen Klassen abwickelt.

  • Verantwortungskette – ermöglicht es, eine strikte Abhängigkeit zwischen Absender und Empfänger einer Anfrage zu vermeiden; zudem kann die Anfrage von mehreren Objekten bearbeitet werden.

  • Beobachter – ermöglicht einem Objekt die Überwachung und Reaktion auf Ereignisse, die in anderen Objekten auftreten.

  • Strategie – ermöglicht die Änderung von Strategien (Algorithmen) zur Laufzeit.

  • Befehl – ​​eine Schnittstelle, die eine Methode zum Ausführen einer bestimmten Aktion deklariert.

  • Status: Ermöglicht einem Objekt, sein Verhalten abhängig von seinem Status zu ändern.

  • Besucher – wird verwendet, um Operationen an Gruppen verwandter Objekte zu vereinfachen.

  • Interpreter – definiert eine Grammatik für eine einfache Sprache in der Problemdomäne.

  • Iterator – greift sequentiell auf Elemente einer Sammlung zu, ohne deren zugrunde liegende Form zu kennen.

  • Memento – wird zum Speichern des Zustands eines Objekts verwendet; Dieser Zustand kann später wiederhergestellt werden.

Während Sie den CodeGym-Kurs durchlaufen, werden Sie in dieser Liste auf einige Muster stoßen. Ich empfehle die folgenden Aufgaben zu Mustern: 1522 , 1530 , 1631 , big01 , 2912 , 3107 ... Der kluge Einsatz von Entwurfsmustern führt zu einer zuverlässigeren Codepflege, da Entwurfsmuster darüber hinaus gute Lösungen für häufig auftretende Probleme darstellen , andere Entwickler können sie erkennen, was die Zeit verkürzt, die für die Arbeit mit bestimmtem Code erforderlich ist.