This training provides a deep understanding of the most common object oriented design patterns. It covers the most useful patterns from the GOF catalogue and the Entreprise Application Patterns (EAP). Through hands-on exercises and discussions, attendees will learn how to incorporate these patterns into new or existing code using modern refactoring tools.
Introduction to the software development process and software architecture
The current challenges of the software development profession
Introduction to agile approaches
Development of software architecture
Continuous quality assessment process
Role of patterns when refactoring code
CI/CD and DevOps practices
Best Practices for Java Coding
"SOLID" principles of R. Martins
Rules of the "Clean Code"
Unit tests and dependency mocking
Static code analysis
Review of Java code metrics
Code audit with SonarQube
Continuous quality control practices
GOF patterns for software design
Presentation of the catalog of GOF patterns
Understand the objective of GOF
GOF creation patterns. Illustration of the most recurring patterns (Singleton, Abstract Factory, Factory Method, Builder)
The patterns of GOF structures. Illustration of the most recurring patterns (Facade, Composite, Adapter, Proxy, Decorator, ...)
GOF behavior patterns. Illustration of the most recurring patterns (Observer, Strategy, Command, Template method, State, ...)
Know how to identify code gaps and know how to align with GOF patterns
EAP Patterns (Enterprise Application Patterns) by M. Fowler
Presentation of M. Fowler's catalog of EAP patterns
Implementation of "layering" and weak coupling between modules
Isolate transverse functions (Logging, Factories, ...) in dedicated modules
Design of the data access layer respecting the "Repository" pattern
Design of the business layer respecting the principles of the "Domain Model" and "Domain Driven Design"
Case study: Build multi-module Spring Boot applications while respecting the catalog of EAP patterns
Micro-service architectures
What is a micro-services architecture
Service composition patterns
Implementation of Miro-services patterns with Spring Cloud
Automatic discovery of services with Spring Cloud Eureka
Gateway and dynamic routing with Spring Cloud Zuul
Scalability, load distribution with Spring Cloud Ribbon
REST client with Spring Cloud Feign
Java Developers, Java Application Architects
Participants should be comfortable with Java language, syntax and object-oriented application development. They should be familiar with Java 8+.