- 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.
- 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.
- 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.