Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:java:learningunits:lu16:b [2026/01/06 00:42] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu16:b [2026/01/06 10:08] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU16b - Prinzipien 3 (OCP, ...) ====== | + | ====== LU16b - Prinzipien 3 (OCP, Law of Demeter) ====== |
| - | Wir betrachten dieses Mal die Prinzipien **OCP** und das **Law of Demeter** | + | Wir betrachten dieses Mal die Prinzipien **OCP** und das **LoD**. |
| ===== Prinzipien ===== | ===== Prinzipien ===== | ||
| Zeile 14: | Zeile 14: | ||
| * //YAGNI (You Ain’t Gonna Need It)// | * //YAGNI (You Ain’t Gonna Need It)// | ||
| * //SoC (Separation of Concerns)// | * //SoC (Separation of Concerns)// | ||
| - | * **Law of Demeter | + | * **LoD (Law of Demeter |
| P.S.: SOLID steht für SRP, OCP, LSP, ISP, DIP | P.S.: SOLID steht für SRP, OCP, LSP, ISP, DIP | ||
| - | |||
| ==== OCP ==== | ==== OCP ==== | ||
| Zeile 23: | Zeile 22: | ||
| Das Open/Closed Principle besagt, dass ein Programm, zwar offen sein soll für (sinnvolle) Weiterentwicklung, | Das Open/Closed Principle besagt, dass ein Programm, zwar offen sein soll für (sinnvolle) Weiterentwicklung, | ||
| - | ==== Law of Demeter | + | Schlecht wäre in diese Hinsicht zum Beispiel ein zentrales Switch-Case-Konstrukt, |
| + | |||
| + | Als Faustregel kann man Klassen tendenziell schliessen, während Interfaces geöffnet werden. Der Modifier '' | ||
| + | |||
| + | Der Modifier '' | ||
| + | |||
| + | ==== LoD ==== | ||
| + | |||
| + | Das Law of Demeter sagt aus, dass Objekte lediglich mit seinen unmittelbaren Abhängigkeiten interagieren sollte. | ||
| + | |||
| + | Ein konkretes Beispiel finden Sie auf https:// | ||
| + | |||
| + | Ein starkes Indiz, dass dieses Prinzip verletzt wurde sind (lange) Getter-Ketten. | ||
| + | |||
| + | <code java> | ||
| + | customer.getCart().getItems().get(0).getProduct().getPrice(); | ||
| + | </ | ||
| - | Das Law of Demeter | + | Solche Fälle sollten in mehrere kleinere Methoden in ihren jeweiligen Entitäten aufgeteilt werden, so dass keine Klasse alle Entitäten der Kette kennen muss. |