This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
design_patterns [2026/02/17 17:27] 172.19.0.1 old revision restored (2026/02/17 06:59) |
design_patterns [2026/02/22 04:56] (current) 172.19.0.1 old revision restored (2025/09/17 23:13) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Design Patterns ====== | ||
| + | |||
| + | **//Ein Muster//** ist eine Lösung eines Problems in einem bestimmten Kontext. | ||
| + | * Der **Kontext** ist die Situation, in der das Muster angewendet wird. Es sollte eine wiederkehrende Situation sein | ||
| + | * Das **Problem** umfasst das Ziel, das Sie in diesem Kontext erreichen möchten, aber auch alle Einschränkungen (oder Randbedingungen), | ||
| + | * Die **Lösung** ist das, was Sie gern hätten: Ein allgemeiner Entwurf, mit dem jeder das Ziel erreichen und diesen Satz von Einschränkungen überwinden kann. | ||
| + | |||
| + | **// | ||
| + | |||
| + | Musterkategorien: | ||
| + | |||
| + | **// | ||
| + | * Singleton | ||
| + | * Builder | ||
| + | * Prototype | ||
| + | * Factory Method | ||
| + | * Abstract Factory | ||
| + | |||
| + | **// | ||
| + | * Mediator | ||
| + | * Visitor | ||
| + | * Template Method | ||
| + | * Iterator | ||
| + | * Command | ||
| + | * Memento | ||
| + | * Interpreter | ||
| + | * Observer | ||
| + | * Chain of Responsibility | ||
| + | * State | ||
| + | * Strategy | ||
| + | |||
| + | **// | ||
| + | * Proxy | ||
| + | * Decorator | ||
| + | * Composite | ||
| + | * Facade | ||
| + | * Flyweigth | ||
| + | * Bridge | ||
| + | * Adapter | ||
| + | |||
| + | **// | ||
| + | Packt ein Objekt ein und fügt dabei neues Verhalten hinzu | ||
| + | |||
| + | **// | ||
| + | Kapselt zustandsbasiertes Verhalten und wechselt durch Delegieren zwischen den Verhaltensweisen. | ||
| + | |||
| + | **// | ||
| + | Bietet eine Möglichkeit, | ||
| + | |||
| + | **// | ||
| + | Vereinfacht die Schnittstelle für eine Gruppe von Klassen. | ||
| + | |||
| + | **// | ||
| + | Kapselt austauschbares Verhalten und entscheidet mittels Delegierung, | ||
| + | |||
| + | **// | ||
| + | Umschließt ein Objekt und kontrolliert so den Zugriff darauf | ||
| + | |||
| + | **//Factory Method// | ||
| + | Unterklassen entscheiden, | ||
| + | |||
| + | **// | ||
| + | Umschließt ein Objekt und stellt eine andere Schnittstelle dafür zur Verfügung. | ||
| + | |||
| + | **// | ||
| + | Ermöglicht die Benachrichtigung von Objekten, wenn sich eine Zustand ändert. | ||
| + | |||
| + | **// | ||
| + | Unterklassen entscheide, wie die Schritte ein einem Algorithmus implementiert werden. | ||
| + | |||
| + | **// | ||
| + | Clients behandeln Sammlungen von Objekten und Einzelobjekten auf gleiche Weise. | ||
| + | |||
| + | **// | ||
| + | Sorgt dafür, dass nur genau ein Objekt erzeugt wird. | ||
| + | |||
| + | **// | ||
| + | Ermöglicht des einem Client, Familien von Objekten zu erstellen, ohne konkrete Klassen anzugeben. | ||
| + | |||
| + | **// | ||
| + | Kapselt einen Auftrag als in Objekt. | ||
| + | |||
| + | Punkt für Punkt: | ||
| + | * Verwenden Sie Muster in Ihren Entwürfen nur dann, wenn es sich auf natürliche Weise ergibt, und nicht zwangsweise, | ||
| + | * Entwurfsmuster sind nicht in Stein gemeißelt; Sie können sie so anpassen und zurecht biegen, wie Sie sie gerade brauchen. | ||
| + | * Verwenden Sie immer die einfachste Lösung, die Ihren Anforderungen entspricht, selbst wen sie kein Muster umfasst. | ||
| + | * Studieren Sie Musterkataloge, | ||
| + | * Mit Musterklassifikationen (oder -kategorien) lassen sich Muster in Gruppen einteilen. Wenn es Ihnen weiterhilft, | ||
| + | * Um selbst Muster zu schreiben, müssen Sie viel Engagement, Zeit und Geduld mitbringen, und Sie müssen bereit sein, eine Menge Code-Verbesserungen durchzuführen. | ||
| + | * Denken Sie daran, dass die meisten Muster, denen Sie begegnen werden, Anpassungen existierender Muster sind und keine neuen Muster. | ||
| + | * Erweitern Sie das gemeinsame Vokabular in Ihrem Team - einer der größten Vorteile, die Sie aus der Verwendung von Mustern ziehen können. | ||
| + | * Wie jede Gemeinschaft hat auch die Mustergemeinde ihren eigenen Fachjargon. Lassen Sie sich davon nicht abschrecken. | ||
| + | |||
| ===== OO-Basics ===== | ===== OO-Basics ===== | ||