2 days
Online / Zoom
English
Certificate
15 people max
Victor Rentea
€7500
9375
This live online course will give you a solid grasp of today’s most important software design patterns, the principles behind them, and the tradeoffs they bring. You’ll learn to identify patterns suited to real-world problems, evaluate design alternatives, and make informed architectural decisions.
Introduction
Mastering design patterns helps you understand existing code, evaluate design alternatives, and communicate ideas more effectively with teammates and architects. This code-driven workshop emphasizes timeless design principles over textbook definitions, covering patterns from basic (like Singleton and Strategy) to strategic (like Visitor and Saga). Through hands-on exploration of real-world tradeoffs and alternatives, you’ll build a practical toolkit for writing cleaner, simpler code. You'll also dive into patterns behind modern frameworks and inter-system collaboration, culminating in a pragmatic, code-first take on Clean Architecture.
This online training is for developers who can read Java (or languages like PHP, C#, TypeScript, Scala, or Kotlin) and want to strengthen their design skills. It’s ideal if you're aiming for an architect role, planning to design a new system, or looking to critically review and improve an existing one.
IMPORTANT
This course is primarily tailored for backend developers working with Java, Kotlin, Scala (often with Spring), C#, or PHP.
Agenda
Forking behavior
Strategy (OOP) vs FP alternative vs Chain of Responsibility (aka “Filters” Pattern)
Template Method (OOP) vs Passing-a-Function (FP) + variations (Loan Pattern)
Visitor Pattern vs Matching Sealed Classes (Java21,Scala,Kotlin)
State Machines & the State Pattern
Intercepting Calls
Decorator,
Proxy (OOP)
Aspect Oriented Programming (AOP) and Execute-Around (FP)
Creating Objects
Factory Method
Singleton, Dependency Injection, Object Pool - overview
Builder – pattern or anti-pattern?
Propagating Change
Observer Pattern: in-memory (eg Spring Events) or messaging
Command Pattern: in-memory (eg tasks to thread pool) or messaging
Observer vs Command
Wrap-up
Anti-Patterns + typical workarounds
Recap & Quiz
Victor Rentea
Victor is a Java Champion, Java Enterprise Architect, and Independent Trainer, delivering intense masterclasses for companies worldwide since 2014. He is passionate about software architecture, clean code, refactoring, and unit testing. He is a regular speaker at top international conferences. He's also the founder of the Bucharest Software Craftsmanship Community with 4000 members.