# Architektur-Prinzipien Dieses Dokument beschreibt die grundlegenden Architekturprinzipien unseres Frameworks. ## 1. Immutabilität und Unveränderlichkeit Wo immer möglich, sollten Objekte unveränderlich (immutable) sein. Dies verbessert die Voraussagbarkeit und Testbarkeit. ## 2. Final by Default Alle Klassen sollten standardmäßig als `final` deklariert werden, es sei denn, es gibt einen konkreten Grund für Vererbung. Begründung: - Vermeidet unbeabsichtigte Vererbungshierarchien - Verbessert die Kapselung - Ermöglicht interne Änderungen, ohne Kinderklassen zu beeinflussen ## 3. Explizite über Implizite - Alle Abhängigkeiten sollten explizit injiziert werden - Keine globalen Zustände oder Singletons - Typen immer explizit deklarieren ## 4. Modularität Jedes Modul sollte in sich geschlossen sein und minimale Abhängigkeiten nach außen haben.