code ARCHITECTURE LOGICIELLE
Design Patterns
en Java
Solutions réutilisables pour une
programmation orientée objet efficace
PAR COURS
Gang of Four Java Avancé
Introduction aux
Design Patterns
Définition
lightbulb
Solutions réutilisables à des problèmes fréquents en
programmation orientée objet.
Objectifs
target
Améliorer la maintenabilité, favoriser la réutilisation, faciliter la
communication, structurer les applications.
Origine
history_edu
Popularisés par le Gang of Four (GoF) - Design Patterns: Elements
of Reusable Object-Oriented Software
Classification des Design Patterns
Trois grandes catégories de solutions
01 02 03
construction account_tree swap_horiz
Patterns Créationnels Patterns Structurels Patterns
Gestion de la création des objets Organisation des classes et objets Comportementaux
Communication entre objets
Singleton • Factory • Builder • Adapter • Decorator • Facade • Observer • Strategy • Command •
Abstract Factory Proxy State
Patterns Créationnels
Gestion de la création des objets
radio_button_checked Singleton factory Factory Method
Garantit une seule instance d'une classe Délègue la création d'objets à une méthode
Cas d'utilisation : Avantages :
• Logger • Config • DB Connection • Flexibilité • Extensibilité
getInstance() { if (null) new(); return instance; } [Link]("chien")
apartment Abstract Factory construction Builder
Crée des familles d'objets liés Construit un objet complexe étape par étape
Usage : Pattern :
• UI Components • Database Drivers • Fluent Interface • Immutable Objects
[Link]() / [Link]() new [Link]().nom("X").age(25).build()
Patterns Structurels
Organisation des classes et objets
cable Adapter auto_awesome Decorator
Permet à des interfaces incompatibles de travailler ensemble Ajoute dynamiquement des fonctionnalités à un objet
Usage : Avantages :
• Intégration API tierce • Legacy systems • Flexible • Sans modifier la classe
Adaptateur implements Target { [Link](); } new CoffeeDecorator(new Coffee()).addMilk()
widgets Facade shield Proxy
Fournit une interface simplifiée à un système complexe Contrôle l'accès à un objet
Usage : Types :
• API simplifiée • Complexité cachée • Remote • Virtual • Protection
[Link]() { [Link](); [Link](); [Link](); } [Link]() { if (auth) [Link](); }
Patterns Comportementaux
Communication entre objets
visibility Observer swap_horiz Strategy
Notifie plusieurs objets lors d'un changement d'état Permet de changer un algorithme dynamiquement
Usage : Avantages :
• Event handling • Pub/Sub • UI updates • Flexible • OCP compliant • Testable
[Link](o -> [Link](message)) [Link](new Addition())
description Command transform State
Encapsule une requête sous forme d'objet Change le comportement selon l'état de l'objet
Usage : Usage :
• Undo/Redo • Queues • Macros • Game states • Workflows • State machines
[Link]() / [Link]() state = new ActiveState() / [Link]()
Bonnes Pratiques et Conseils
Maîtriser les Design Patterns efficacement
check_circle À Faire ✅ cancel À Éviter ❌
done Utiliser les patterns quand nécessaire close Sur-utilisation des patterns
done Garder le code simple close Complexification inutile
done Respecter les principes SOLID close Copier sans comprendre
school Conseils pour Maîtriser
psychology code library_books build
Comprendre le problème avant le Pratiquer avec des mini projets Lire du code existant Implémenter chaque pattern soi-même
pattern