Technischer Projektleiter
Java-Entwurfsmuster: Definition und alle Typen
Was ist ein Entwurfsmuster?
Ein Entwurfsmuster (Design Pattern) ist im Allgemeinen eine wiederverwendbare Lösung für ein häufig auftretendes Problem bei der Softwareentwicklung. Ein Design Pattern ist kein fertiges Design, das einfach in den Code kopiert werden kann. Es handelt sich nicht um einen konkreten Codeabschnitt, sondern um ein allgemeines Konzept oder eine Vorlage zur Lösung eines bestimmten Problems, das in vielen verschiedenen Situationen anwendbar ist. Design Patterns können den Entwicklungsprozess beschleunigen, indem sie bewährte und getestete Entwicklungspraktiken anwenden.
Verteilung von Entwurfsmustern
Wir kennen: Erzeugungsmuster (Creational Patterns), Strukturmuster (Structural Patterns) und Verhaltensmuster (Behavioral Patterns).
Erzeugungsmuster (Creational Patterns)
Die Muster aus dieser Kategorie befassen sich mit der Erzeugung von Instanzen von Klassen.
- Singleton – stellt sicher, dass die Klasse nur eine Instanz hat und bietet diese Instanz als Zugriffspunkt an.
- Builder ermöglicht es, die Erstellung eines komplexen Objekts in eine Serie von einfachen Schritten zu zerlegen.
- Prototyp – erstellt eine Instanz eines neuen Objekts durch Klonen einer bestehenden Instanz.
- Factory – bietet eine Schnittstelle zur Erstellung von Objekten abgeleiteter Klassen.
- Abstrakte Fabrik – bietet eine Schnittstelle zur Erstellung von Familien verwandter Objekte, ohne dass deren spezifische Klassen angegeben werden. müssen.
Strukturelle Muster (Structural patterns)
Muster aus dieser Kategorie befassen sich mit Klassenstrukturen wie Vererbung und Komposition.
- Adapter – ermöglicht die Zusammenarbeit von Objekten mit inkompatiblen Schnittstellen.
- Bridge – trennt die Abstraktion von der Implementierung, so dass sich die beiden Teile unabhängig voneinander ändern können.
- Composite ermöglicht es, Objekte in Baumstrukturen zu organisieren und mit ihnen so zu arbeiten, als ob es sich um einzelne Objekte handelt.
- Decorator – wird verwendet, um dynamisch neue Verantwortlichkeiten oder Funktionen zu bestehenden Objekten hinzuzufügen (und zu entfernen), ohne das Verhalten anderer Objekte der gleichen Klasse zu beeinflussen.
- Fassade – bietet eine vereinfachte Schnittstelle zu einem ansonsten komplexen System.
- Flyweight – ermöglicht die gemeinsame Nutzung von Teilen bereits vorhandener Objekte, um die Anzahl der erstellten Objekte zu reduzieren.
- Proxy – bietet die Möglichkeit, das ursprüngliche Objekt durch ein anderes Objekt zu ersetzen, das den Zugriff auf das ursprüngliche Objekt kontrolliert.
Verhaltensmuster (Behavioral patterns)
Muster in dieser Kategorie befassen sich mit der Kommunikation zwischen Objekten.
- Chain of Responsibility Muster bietet eine Methode, eine Anforderung durch eine Kette von Objekten weiterzuleiten. Jedes angesprochene Objekt hat die Möglichkeit, die Anforderung zu bearbeiten oder sie an das nächste Objekt in der Kette weiterzugeben.
- Command – implementiert das request–response-Modell, indem es einen Befehl und seine Metadaten in ein Objekt kapselt.
- Iterator– ermöglicht es, die Elemente einer Kollektion zu durchlaufen, ohne deren zugrunde liegenden Typ offenzulegen.
- Mediator – bietet eine zentralisierte Kommunikation zwischen verschiedenen Objekten im System.
- Memento – ermöglicht es, den vorherigen Zustand eines Objekts zu speichern und später wiederherzustellen.
- Observer – bietet einen Mechanismus, um alle interessierten Objekte zu benachrichtigen, wenn eine Änderung an dem beobachteten Objekt auftritt.
- State – ermöglicht es einem Objekt, sein Verhalten zu ändern, wenn sich sein interner Zustand ändert.
- Strategy – bietet die Möglichkeit, eine Familie von Algorithmen zu definieren, die jeweils einer eigenen Klasse angehören, und ihre Austauschbarkeit zu gewährleisten.