Design Patterns
Catalogue et exercices
Catégories
🔧 Créationnel | 🗼Structurel | 🤹Comportemental |
---|---|---|
Prototype | Adapter | Strategy |
Singleton | Composite | Chain of Responsibility |
Proxy | Observer | |
Decorator |
Prototype
Usage
- Cloner un objet sans être couplé aux détails d'implémentation de sa classe
- Créer des modèles de bases pour fabriquer facilement de nouveaux objets
Prototype
Schema
Adapter
Usage
Créer une classe B autour d'une classe A, B présentant une nouvelle interface, et utilisant l'ancienne interface de A en interne.
Adapter
Schema
Singleton
Usage
- Limiter une classe à 1 unique instance (ex: l'objet qui lit la DB)
- Retarder son initialisation au moment où c'est nécessaire
Singleton
Schema
Composite
Usage
- Représenter une structure d'objet en arbre
- Pouvoir travailler uniformément avec de simples objets, ou des aggrégats d'objet
Composite
Schema
Facade
Usage
Offrir une interface simplifiée et limitée à un ou plusieurs sous-systèmes complexes.
- Réduit le couplage du code
- Mais risque que la façade couvre trop de chose
Facade
Schema
Proxy
Usage
Contrôler l'accès à un objet et ajouter de la logique avant ou après qu'une requête lui soit transmise
Proxy
Schema
Decorator est un pattern similaire. La nuance est dans l'intention
Strategy
Usage
Encapsule une logique/algorithme dans des objets/fonctions que l'on peut interchanger à l'éxecution
Strategy
Schema
Note: en pratique, préférez de simples fonctions
Chain of Responsibility
Usage
Séparer une logique en une chaîne dynamique de Handler. Chacun son tour ils peuvent traiter la requête, et éventuellement la passer au suivant
Chain of Responsibility
Schema
Note: encore une fois, privilégiez les simples fonctions
Observer
Usage
Les changements d'un élément feront réagir un ensemble d'autres éléments.
Ces autres éléments peuvent être connus seulement à l'éxecution
Observer
Schéma
Exemple: HTMLElement.addEventListener
Design Patterns : Catalogue
By Nicolas Gaborit
Design Patterns : Catalogue
Catalogue de designs patterns populaires. Présentation et exercices en JS
- 100