Site Tools


Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
design_patterns

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
design_patterns [2025/08/30 09:06]
172.19.0.1 old revision restored (2025/08/30 02:58)
design_patterns [2025/08/30 09:06] (current)
172.19.0.1 old revision restored (2025/08/30 02:59)
Line 34: Line 34:
   * Verlassen Sie sich nicht auf eine bestimmte Reihenfolge der Benachrichtigung Ihrer Beobachter.   * Verlassen Sie sich nicht auf eine bestimmte Reihenfolge der Benachrichtigung Ihrer Beobachter.
  
 +==== Decorator ====
 +Fügt einem Objekt dynamisch zusätzliche Verantwortlichkeiten hinzu. Dekorierer bieten eine flexible Alternative zur Ableitung von Unterklassen zum Zweck der Erweiterung der Funktionalität.
 +
 +Punkt für Punkt:
 +  * Vererbung ist eine Form von Erweiterung, aber nicht notwendigerweise der beste Weg, um Ihren Entwürfen Flexibilität zu verleihen.
 +  * Unsere Entwürfe sollten die Erweiterung von Verhalten ermöglichen, ohne dass dazu bestehender Code geändert werden müsste.
 +  * Oft können Komposition und Delegierung verwendet werden, um zur Laufzeit neue Verhalten hinzuzufügen.
 +  * Für die Erweiterung von Verhalten bietet das Decorator-Muster eine Alternative zur Ableitung von Unterklassen.
 +  * Das Decorator-Muster schließt einen Satz von Dekorierer-Klassen ein, die verwendet werden, um konkrete Komponenten einzupacken.
 +  * Dekorierer-Klassen spiegeln den Typ der Komponente wider, die sie dekorieren. (Sie haben tatsächlich den gleichen Typ wie die Komponente, die sie dekorieren, entweder durch Vererbung oder durch die Implementierung eines Interface.)
 +  * Dekorierer ändern das Verhalten der Komponente, indem sie vor und/oder nach (oder auch an Stelle von) Methodenaufrufen auf der Komponente neue Funktionalitäten hinzufügen.
 +  * Sie können eine Komponente mit einer beliebigen Zahl von Dekorierern einpacken.
 +  * Dekorierer sind für die Clients der Komponente überlichweise transparent, außer wenn sich der Client auf den konkreten Type der Komponente stützt.
 +  * Dekorierer können in Ihren Entwürfen zu vielen kleinen Objekten führen, und eine übermäßige Verwendung kann den Code unübersichtlich machen.
  
 ==== Factory ==== ==== Factory ====
Line 70: Line 84:
   * Befehle können auch verwendet werden, um Loggings und Transaktionsysteme zu implementieren.   * Befehle können auch verwendet werden, um Loggings und Transaktionsysteme zu implementieren.
  
 +==== Adapter, Facade ====
 +
 +**//Adapter//**
 +
 +Das Adapter-Muster konvertiert die Schnittstelle einer Klasse in die Schnittstelle, die der Client erwartet. Adapter ermöglichen die Zusammenarbeit von Klassen, die ohne nicht zusammenarbeiten könnten, weil sie inkompatible Schnittstellen haben.
 +
 +**//Facade//**
 +
 +Das Facade-Muster bietet eine vereinheitliche Schnittstelle für einen Satz von Schnittstellen eines Basissystems. Die Fassade definiert eine hochstufigere Schnittstelle, die die Verwendung des Basissystems vereinfacht.
 +
 +Punkt für Punkt:
 +  * Nehmen Sie Adapter, wenn Sie eine bestehende Klasse verwenden müssen und ihre Schnittstelle nicht der entspricht, die Sie benötigen.
 +  * Verwenden Sie Facade, wenn Sie eine größere Schnittstelle oder eine komplexe Menge von Schnittstellen vereinfachen müssen.
 +  * Ein Adapter ändert eine Schnittstelle in die, die ein Client erwartet.
 +  * Eine Fassade entkoppelt eine Client von einem komplexen Basissystem.
 +  * Je nach Größe und Komplexität einer Ziel-Schnittstelle kann es etwas Arbeit sein, einen Adapter zu implementieren.
 +  * Bei der Implementierung einer Fassade ist es erforderlich, dass man die Fassade mit ihrem Basissystems zusammensetzt und Delegierung verwendet, um die Arbeit der Fassade durchzuführen.
 +  * Es gibt zwei Formen des Adapter-Musters: Objekt- und Klassen-Adapter. Für Klassen-Adapter ist Mehrfachvererbung erforderlich.
 +  * Für ein Basissystem können Sie mehr als eine Fassade implementieren.
 +  * Ein Adapter umhüllt ein Objekt, um seine Schnittstelle zu ändern, ein Dekorierer umhüllt ein Objekt, um neue Verhalten und Verantwortlichkeiten hinzuzufügen, eine Fassade umhüllt einen Satz von Objekten, um die Schnittstelle zu vereinfachen.
  
 ==== Template Method ==== ==== Template Method ====
design_patterns.txt · Last modified: 2025/08/30 09:06 by 172.19.0.1