Edocti
Fortgeschrittene technische Ausbildung für den modernen Softwareingenieur
Edocti Training

Design Patterns in Modern Java (GoF)

Mittelstufe
21 h
4.8 (63 Bewertungen)

Geplante Sessions

Aktuell sind keine Termine verfügbar.
Design Patterns in Modern Java (GoF)

Design Patterns in Modern Java: Wenden Sie die klassischen Gang-of-Four (GoF) Patterns effizient an und modernisieren Sie diese durch Java 8+ Features.

Sammeln Sie umfassende Hands-on-Erfahrung mit Erzeugungs-, Struktur- und Verhaltensmustern in realistischen Softwareprojekten.

Lernen Sie, wie Streams, Lambdas, Records und Functional Interfaces eingesetzt werden, um Legacy-Code sauber zu modernisieren.

Praktische Erfahrung sammeln: Die Labs (ca. 70 % des Kurses) konzentrieren sich auf das Refactoring von Code und den Aufbau flexibel erweiterbarer Projekte.

Nutzen: Verbessern Sie die Wartbarkeit, Lesbarkeit, Testbarkeit und Skalierbarkeit Ihrer Java-Anwendungen signifikant.

Für wen: Konzipiert für Java-Entwickler, die sauberen Code (Clean Code) schreiben und besseres Softwaredesign anstreben.

Der Kurs enthält zudem optionale Module zu Dependency Injection (Spring/CDI) und zur Erkennung von Anti-Patterns.

Fähigkeiten, die Sie lernen werden

GoF Design Patterns Creational Patterns Structural Patterns Behavioral Patterns Code Refactoring Modernes Java (8-21) Funktionale Interfaces Architektur & Testing

Curriculum

Tag 1 — Grundlagen & Creational

  • Modern Java für Patterns: Records, Sealed Classes, Pattern Matching (instanceof/switch), var, Module (JPMS)
  • Generics und Varianz; Immutability; equals/hashCode/toString; Optional Best Practices
  • Factory Method — Intent, UML, Test-First-Implementierung; Variante mit enum-switch; pattern matching switch
  • Abstract Factory — familienbasierte Interfaces; Komposition vs. Reflection; Wiring via Module
  • Builder — Fluent API; unveränderliche Objekte mit Records; Validierung und staged Builders
  • Prototype — Kopierstrategien; deep vs. shallow; Copy-Konstruktoren vs. Serialization; Records & Withers
  • Singleton — enum-basiert, Lazy Holder; Testbarkeit und Lifecycle; versteckten Global State vermeiden

Tag 2 — Structural

  • Adapter — Klassen- vs. Objektadapter; Legacy-APIs abbilden; Default Methods als Adapter
  • Bridge — Abstraktion/Implementierung entkoppeln; Komposition statt Vererbung
  • Composite — Einheitsbehandlung von Teil/Ganzem; safe vs. transparent; Iteration mit Streams
  • Decorator — Verhalten schichten; Unterschiede zur Vererbung; kleine Decorators mit Records
  • Facade — Subsysteme vereinfachen; Modulgrenzen und Package-Visibility-Tricks
  • Flyweight — Speichersharing; Interning; value-based classes; Fallstricke bei Mutabilität
  • Proxy — statische vs. dynamische Proxies; Caching, Security, Remote; Virtual Proxies mit Lazy Loading

Tag 3 — Behavioral & Concurrency

  • Strategy — If-Kaskaden ablösen; Lambdas/Functional Interfaces; Strategien komponieren
  • Template Method — Hooks vs. Default Methods; wann durch Strategy ersetzen
  • State — Sealed-Class-Hierarchien für explizite Zustände; Transitionstabellen
  • Chain of Responsibility — Pipelines; Optional/Try-ähnliche Ergebnisse; Stream-basierte Ketten
  • Command — Undo/Redo; Queueing und Audit Logging; funktionale Command-Objekte
  • Observer — Flow API/Reactive Streams; Property Change; Backpressure-Grundlagen
  • Mediator — Kopplung in GUIs/Modulen reduzieren; Event Bus
  • Iterator — Iterable vs. Stream; Lazy und Collecting; eigener Spliterator
  • Memento — Snapshots mit Records; Persistenz-Hooks
  • Visitor — Sealed Hierarchien; Pattern-Matching-Switch; Alternativen zu Double-Dispatch
  • Interpreter — kleine DSLs; Parsen mit Pattern Matching; wann Kombinatoren bevorzugen
  • Concurrency-Addendum — Executors vs. Virtual Threads; CompletableFuture; Structured Concurrency (Konzepte)

Optionale Module

Optional — Architektur & Testing

  • Dependency Injection (Jakarta CDI/Spring) — Bezug zu Patterns (Factory, Strategy, Facade)
  • Hexagonal/Ports & Adapters; Schichten und Modulgrenzen (JPMS)
  • Pattern-Tests mit JUnit 5; Test Doubles; Approval Tests für Refactorings

Kursablauf

  • Teil 1: 09:00–10:30
  • Pause: 10:30–10:45
  • Teil 2: 10:45–12:15
  • Mittagspause: 12:15–13:15
  • Teil 3: 13:15–15:15
  • Pause: 15:15–15:30
  • Teil 4: 15:30–17:30

Haben Sie an diesem Kurs teilgenommen?

Ihre Meinung ist uns sehr wichtig. Teilen Sie Ihre Erfahrungen mit uns und helfen Sie uns, diesen Kurs für zukünftige Teilnehmer weiter zu verbessern.

Feedback teilen

Möchten Sie mehr erfahren? Wir helfen Ihnen gern!

Oder schreiben Sie uns direkt an training@edocti.com.