In diesem Repository befindet sich ein kleines Beispiel in dem ich die Prinzipien des Data Oriented Programmings mit Java 19+ und Preview Features demonstriere. Dieses Beispiel verwende ich in Artikeln und Vorträgen zu dem Themenblock und werde es regelmäßig auf die neusten Versionen von Java aktualisieren.
In diesem Beispiel erstelle ich für verschiedene Arten von Kunden Rechnungen. Kunden unterteilen sich in Privat- und Businesskunden, wobei Businesskunden Vorsteuerabzugsberechtigt sein können.
Zusätzlich gibt es zwei Rechnungsarten: intern und extern. Bei internen Rechnungen handelt es sich um Verrechnungen zu denen keine Rechnung im herkömmlichen Sinne versandt werden muss. Bei externen Rechnungen muss die Rechnung formatiert und als E-Mail an den Kunden versandt werden.
- JEP 409: Sealed Classes um die Auswahlmöglichkeiten bei der Rechnung und dem Kunden zu modellieren
- JEP 395: Records um kompakte Data Carrier für Rechnungen und Kunden zu definieren
- JEP 394: Pattern Matching for instanceof um eine Fallunterscheidung zu machen wie ein Kunde bzw. eine Rechnung verarbeitet wird
- JEP 433: Pattern Matching for switch (Fourth Preview) um die Fallunterscheidung lesbarer zu machen
- JEP 432: Record Patterns (Second Preview) um direkt auf Record Inhalte zuzugreifen
- JEP 430: String Templates (Preview) um Texte noch besser angenehm zu formatiere