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:lu03:a [2025/08/29 11:28] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu03:a [2025/09/01 12:18] (aktuell) – apeter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== LU03a - Prinzipien ====== | + | ====== LU03a - Prinzipien |
+ | |||
+ | ==== Prinzipien ==== | ||
+ | |||
+ | * **DRY (Don’t Repeat Yourself)** | ||
+ | * **SRP (Single Responsibility Principle)** | ||
+ | * //OCP (Open/ | ||
+ | * //LSP (Liskov Substitution Principle)// | ||
+ | * //ISP (Interface Segregation Principle)// | ||
+ | * //DIP (Dependency Inversion Principle)// | ||
+ | * //KISS (Keep It Simple, Stupid)// | ||
+ | * //YAGNI (You Ain’t Gonna Need It)// | ||
+ | * //SoC (Separation of Concerns)// | ||
+ | * //Law of Demeter (Principle of Least Knowledge)// | ||
+ | |||
+ | SOLID steht wiederum für SRP, OCP, LSP, ISP, DIP | ||
+ | |||
+ | Wir fokussieren uns erstmal auf **DRY** und **SRP**. | ||
+ | |||
+ | === DRY === | ||
+ | |||
+ | Code ist viel simpler art- und erweiterbar, | ||
+ | |||
+ | Wenn Sie zum Beispiel an zwei unterschiedlichen Orten denselben Datenbankaufruf haben, kann man diese Funktionalität auslagern in eine gemeinsame Methode (oder oftmals gar eine eigene Klasse). | ||
+ | |||
+ | <code java> | ||
+ | Connection conn = DriverManager.getConnection(URL, | ||
+ | </ | ||
+ | |||
+ | <code java> | ||
+ | public class Database { | ||
+ | private static final String URL = Config.get(" | ||
+ | private static final String USER = Config.get(" | ||
+ | private static final String PASSWORD = Config.get(" | ||
+ | |||
+ | public static Connection getConnection() throws SQLException { | ||
+ | return DriverManager.getConnection(URL, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Kontrollieren Sie Ihren Code hinsichtlich dieses Prinzips und korrigieren Sie bei Bedarf. | ||
+ | |||
+ | === SRP === | ||
+ | Jede Klasse sollte nur einen Aufgabenbereich haben. Das Lesen und Schreiben von Dateien ist somit zu trennen von der Logik für den Zugriff auf die Datenbank usw. | ||
+ | |||
+ | Kontrollieren Sie Ihren Code hinsichtlich dieses Prinzips und korrigieren Sie bei Bedarf. | ||
+ | |||
+ | Ein möglicher Aufbau der Klassen könnte folgendermassen aussehen. | ||
+ | |||
+ | {{: | ||