This commit is contained in:
David Schirrmeister
2024-06-25 14:00:58 +02:00
parent d7b282169b
commit 7264e7777c
19 changed files with 156 additions and 2 deletions

View File

@ -194,4 +194,84 @@
## Adapter Pattern
-
- Erlaubt das Nutzen eines Clients mit einem inkompatiblen Interface
### Structure Adapter Pattern
![image_401.png](image_401.png)
#### Target
- Definiert domänenspezifisches Interface, das der Client nutzt
#### Client (Adapter Pattern)
- Arbeitet mit Objekten, welche mit dem [Target](#target)-Interace übereinstimmen
#### Adaptee
- Definiert existierendes Interface, welches Adaption benötigt
#### Adapter
- Adaptiert das Interface des Adaptee zum Target-Interface
#### Collaborations
- Client ruft Operationen auf dem Adapter-Interface auf
### Beispiel Adapter Pattern
![image_402.png](image_402.png)
![image_403.png](image_403.png)
### Fazit Adapter Pattern
- **SRP**
- Primäre Business Logik eines Programms ist vom Interface getrennt
- **OCP**
- Neuer Adapter kann, ohne den existierenden Code zu bearbeiten, erstellt werden
- Adapter ändert Interface in eins, das der Client erwartet
- **Sollte vermieden werden, wenn es möglich ist**
## Facade Pattern
- Klasse, die ein simples Interface zu einem komplexen System bereitstellt
### Struture Facade Pattern
![image_404.png](image_404.png)
#### Facade
- Weiß, welche Subsystem-Klassen verantwortlich sind
- Delegiert Client-Anfragen an Klassen
#### Subsystem Classes
- Implementiert Subsystem Funktionalität
- Hat kein Wissen von der Fassade
#### Collaborations Facade Pattern
- Clients kommunizieren mit dem Subsystem durch requests zur Fassade
### Fazit Facade Pattern
- **SRP**
- Kann verletzt werden je nach Implementierung
## Composite Pattern
- Baumartige Objektstruktur
### Structure Composite Pattern
![image_405.png](image_405.png)
#### Component (Abstract Class)
- Deklariert Interface für Objekte in der Komposition
- Implementiert für teilweises default-Verhalten
#### Leaf
- Definiert Verhalten, welches individuell für die Klasse ist
#### Composite
- Definiert Verhalten für Branch-Komponenten
#### Client (Composite Pattern)
- Nutzt Objekte in der Komposition durch das Interface
### Beispiel Composite Pattern
![image_406.png](image_406.png)
![image_407.png](image_407.png)
## Strategy Pattern
![image_408.png](image_408.png)
## State Pattern
![image_409.png](image_409.png)