Skip to content

Instantly share code, notes, and snippets.

@rgaidot
Created April 4, 2024 12:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rgaidot/16030893b31363e5e1f0f1d05c280f17 to your computer and use it in GitHub Desktop.
Save rgaidot/16030893b31363e5e1f0f1d05c280f17 to your computer and use it in GitHub Desktop.
design patterns

Design patterns

Patrons de Création :

  • Singleton : Garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à cette instance.
  • Factory Method : Définit une interface pour créer un objet, mais permet aux sous-classes de choisir la classe d'objet à instancier.
  • Abstract Factory : Fournit une interface pour créer des familles d'objets connexes sans spécifier leurs classes concrètes.
  • Builder : Sépare la construction d'un objet complexe de sa représentation afin que le même processus de construction puisse créer différentes représentations.
  • Prototype : Utilisé pour créer de nouveaux objets en copiant un prototype existant plutôt qu'en utilisant un constructeur.
  • Object Pool : Un ensemble d'objets pré-construits qui sont maintenus prêts à être utilisés, évitant ainsi le coût de création et de destruction d'objets fréquemment utilisés.

Patrons de Structure :

  • Adapter : Permet à des classes d'interfaces incompatibles de travailler ensemble en enveloppant une interface existante dans une nouvelle interface attendue par le client.
  • Decorator : Attache dynamiquement des responsabilités supplémentaires à un objet. Il est utile pour étendre les fonctionnalités des objets de manière flexible.
  • Composite : Permet de composer des objets dans une structure arborescente pour représenter une hiérarchie tout en traitant les objets individuels et les compositions d'objets de manière uniforme.
  • Bridge : Découple une abstraction de son implémentation afin que les deux puissent varier indépendamment.
  • Flyweight : Réduit le coût de la création et de l'utilisation d'objets légers en partageant au maximum les données avec des objets similaires.
  • Proxy : Fournit un substitut ou un espace réservé pour un autre objet afin de contrôler l'accès à celui-ci.

Patrons de Comportement :

  • Observer : Définit une dépendance "un-à-plusieurs" entre les objets, de sorte que lorsque l'objet observé change d'état, tous ses observateurs sont notifiés et mis à jour automatiquement.
  • Strategy : Permet de définir une famille d'algorithmes, d'encapsuler chacun d'eux et de les rendre interchangeables. Les algorithmes peuvent alors varier indépendamment des clients qui les utilisent.
  • Command : Encapsule une requête comme un objet, ce qui permet de paramétrer des clients avec des requêtes, de les mettre en file d'attente, de les enregistrer et d'annuler des opérations.
  • State : Permet à un objet de modifier son comportement lorsque son état interne change. L'objet semble changer de classe.
  • Iterator : Fournit un moyen de parcourir séquentiellement les éléments d'une collection sans exposer sa représentation interne.
  • Memento : Permet de capturer et de restaurer l'état interne d'un objet sans violer l'encapsulation, souvent utilisé pour implémenter la fonctionnalité "undo".
  • Chain of Responsibility : Permet de traiter une requête en passant la requête le long d'une chaîne de gestionnaires potentiels jusqu'à ce qu'elle soit traitée ou que la chaîne soit épuisée.
  • Visitor : Permet d'ajouter de nouvelles opérations à une structure d'objets existante sans modifier les objets eux-mêmes, en utilisant une classe visiteur externe.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment