This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
design_patterns [2025/07/01 01:10] 172.19.0.1 old revision restored (2025/05/22 01:27) |
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, | ||
+ | * Streben Sie für Objekte, die interagieren, | ||
+ | * 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, | ||
+ | |||
+ | 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, | ||
+ | * zu Komponenten des Objekts gehören. | ||
===== OO-Patterns ===== | ===== OO-Patterns ===== | ||