Course
digicode: ODP
Design Patterns for Modern Software Development
Course facts
Download as PDF- Understanding the key concepts, use cases, and limitations of design patterns
- Applying design patterns to common design problems
- Evaluating alternative patterns based on maintainability, extensibility, testability, and readability
- Identifying design smells and improving existing designs through refactoring
- Using AI to assist in analyzing design problems and evaluating solution options
In this hands-on course, you will learn how to effectively use design patterns to develop maintainable, flexible, and understandable software. You will identify common design problems, select appropriate pattern alternatives, and evaluate their impact on maintainability, extensibility, understandability, and testability.
Through hands-on exercises, you will work with selected patterns, refactor existing designs, and discuss typical trade-offs. AI tools will be used as sparring partners to analyze design problems, compare solution options, and critically evaluate refactoring ideas.
1 Software Design and Design Quality
- Characteristics of good object-oriented design
- Maintainability, extensibility, testability, and readability
- SOLID principles as a basis for design decisions
- Design smells and typical causes of hard-to-maintain code
- Trade-offs and consequences of design decisions
2 Understanding and Selecting Design Patterns
- Purpose, structure, and application of design patterns
- Overview of creational, structural, and behavioral patterns
- Pattern selection based on context, problem statement, and consequences
- Anti-patterns and excessive use of patterns
3 Selected Design Patterns in Practice
- Singleton, Factory Method, and Abstract Factory for flexible object creation
- Adapter, Facade, Composite, and Proxy for decoupled structures
- Strategy, Observer, and Template Method for flexible behavior
- Chain of Responsibility and Command for extensible workflows
4 From Design Problem to Solution
- Identifying and analyzing design problems
- Developing and evaluating suitable pattern alternatives
- Refactoring existing designs using patterns
- UML sketches and code examples for discussing solution variants
- AI support for analyzing, comparing, and testing solution approaches
5 Design Patterns in the Context of Architecture
- The interplay of design patterns, SOLID, and architectural decisions
- Dependency Injection and Inversion of Control
- Patterns in layered architectures and Clean Architecture (Hexagonal Architecture, Ports & Adapters)
- Classification of selected patterns in Domain-Driven Design (DDD) and modern frameworks
- Distinction from architectural, integration, cloud, and distributed patterns
The course alternates between theoretical impulses and practical exercises. The exercises are conducted individually and in groups.
Selected design patterns are applied using practical design and code examples (Java) and discussed in a plenary session.
This course is aimed at software developers and IT architects who wish to further deepen their knowledge of software design.
The minimum requirements are knowledge equivalent to the following course: