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
Next revision
Previous revision
design_patterns [2025/06/24 20:12]
172.19.0.1 old revision restored (2025/05/22 00:21)
design_patterns [2025/07/03 10:35] (current)
172.19.0.1 old revision restored (2025/07/01 01:11)
Line 99: Line 99:
   * Inheritance   * Inheritance
  
 +===== OO-Principles =====
 +  * Kapseln Sie das, was variiert.
 +  * Ziehen Sie die Komposition der Vererbung vor.
 +  * Programmieren Sie auf ein Schnittstelle, nicht auf eine Implementierung.
 +  * Streben Sie für Objekte, die interagieren, nach Entwürfen mit lockere Bindung.
 +  * Klassen sollten für Erweiterung offen, aber für Veränderung geschlossen sein.
 +  * Stützen Sie sich auf Abstraktionen. Stützen Sie sich nicht auf konkrete Klassen (Dependency Inversion Principle).
 +  * Sprechen Sie nur mit Ihren engsten Freunden (Prinzip der Verschwiegenheit).
 +  * Versuchen Sie nicht, uns anzurufen, wir rufen Sie an (Hollywood-Prinzip).
 +  * Eine Klasse sollte nur einen Grund haben, sich zu ändern.
  
 +Dependency Inversion Principle - Policies:
 +  * Keine Variable sollte eine Referenz auf eine konkrete Klasse halten. Wenn Sie **new** verwenden, halten Sie eine Referenz auf eine konkrete Klasse.Verwenden Sie eine Factory, um das zu umgehen.
 +  * Keine Klasse sollte von einer konkreten Klasse abgeleitet sein. Wenn Sie von einer konkreten Klasse ableiten, sind Sie von einer konkreten Klasse abhängig. Leiten Sie von einer Abstraktion wie einem Interface oder einer abstrakten Klasse ab.
 +  * Keine Methode sollte eine implementierte Methode einer ihrer Basisklassen überschreiben. Wenn Sie eine implementierte Methode überschreiben, war Ihre Basisklasse keine Abstraktion, die als Ausgangspunkt tauglich ist. Zweck der in der Basisklasse implementierten Methoden ist, dass sie von allen Ihren Unterklassen geteilt werden.
 +
 +Das Prinzip der Verschwiegenheit - Policies:
 +  * Jede Methode eines Objektes sollte nur Methoden aufrufen, die zum Objekt selbst,
 +  * zu Objekten, die der Methode als Parameter übergeben wurde,
 +  * zu Objekten, die die Methode erstellt oder instantiiert, sowie
 +  * zu Komponenten des Objekts gehören.
 ===== OO-Patterns ===== ===== OO-Patterns =====
  
design_patterns.1750788745.txt.gz · Last modified: 2025/06/24 20:12 by 172.19.0.1