Section courante

A propos

Section administrative du site

Design Patterns

Un Design Pattern (ou patron de conception) est une solution réutilisable à un problème récurrent de conception logicielle.

Ce n'est pas du code prêt à l'emploi, mais un modèle décrivant comment structurer le code pour résoudre un type de problème.

Il permet d'écrire des logiciels robustes, maintenables et évolutifs.

Origine : Les Design Patterns ont été popularisés par le Gang of Four (GoF) dans le livre «Design Patterns: Elements of Reusable Object-Oriented Software» (1994).

Pourquoi utiliser les Design Patterns ?

Réutilisabilité

Ils proposent des structures éprouvées.

Le code devient plus cohérent entre projets.

Lisibilité

Les développeurs familiers avec les patterns comprennent rapidement l'intention du code.

Maintenance facilitée

Les patterns isolent la complexité et réduisent le couplage.

Communication

Un pattern bien nommé (exemple : Observer, Singleton) communique immédiatement son rôle aux autres développeurs.

Classification des Design Patterns

Les patterns sont généralement classés en trois grandes catégories :

Patterns de création (Creational)

Gèrent la création des objets, de manière flexible et contrôlée.

Patterns structurels (Structural)

Gèrent la composition des classes et objets pour former des structures plus grandes.

Patterns comportementaux (Behavioral)

Gèrent la communication et le comportement des objets.

Principe général

Les Design Patterns appliquent des principes de conception POO, notamment :

Exemples concrets

Singleton (Création)

But : Une seule instance globale d'une classe.

Voici un exemple en Free Pascal :

  1. Type
  2.  TConfig=class
  3.   Private
  4.    Class var FInstance: TConfig;
  5.    Constructor Create;
  6.   Public
  7.    Class function GetInstance:TConfig;
  8.    Procedure Afficher;
  9.   End;
  10.  
  11. Constructor TConfig.Create;Begin
  12.   // Initialisation
  13. End;
  14.  
  15. Class Function TConfig.GetInstance:TConfig;Begin
  16.  If FInstance=NIL Then FInstance := TConfig.Create;
  17.  Result := FInstance;
  18. End;
  19.  
  20. Procedure TConfig.Afficher;Begin
  21.  WriteLn('Instance unique');
  22. End;

Observer (Comportemental)

But : Les objets s'abonnent à un événement pour être notifiés.

  1. Type
  2.  IObserver=Interface
  3.   Procedure Update;
  4.  End;
  5.  
  6.  TSubject=Class
  7.   Private
  8.    Observers: array of IObserver;
  9.   Public
  10.    procedure Attach(o:IObserver);
  11.    procedure Notify;
  12.   End;

Chaque Observer implémente Update, et Notify informe tous les observateurs.

Factory Method (Création)

But : Créer des objets sans exposer la classe concrète.

  1. Type
  2.  IAnimal=Interface
  3.   Procedure Crier;
  4.  End;
  5.  
  6.  TChien=Class(TInterfacedObject,IAnimal)
  7.   Procedure Crier;
  8.  End;
  9.  
  10.  TChat=Class(TInterfacedObject, IAnimal)
  11.   Procedure Crier;
  12.  End;
  13.  
  14. Function CreerAnimal(TypeAnimal:String):IAnimal;Begin
  15.  If TypeAnimal='Chien'Then Result:=TChien.Create
  16.  Else If TypeAnimal='Chat'Then Result:=TChat.Create;
  17. End;

Bonnes pratiques avec les Design Patterns

Design Patterns et POO

Les patterns sont la concrétisation des principes POO :

Principe POO Pattern typique
Encapsulation Decorator, Proxy
Abstraction Factory, Template Method
Héritage Template Method, Composite
Polymorphisme Strategy, Observer

Conclusion

Les Design Patterns sont un outil avancé pour structurer du code POO. Ils améliorent la réutilisabilité, la lisibilité et la maintenabilité. Bien compris, ils permettent de résoudre des problèmes récurrents rapidement et de communiquer clairement l'architecture aux autres développeurs.



Dernière mise à jour : Jeudi, le 1er janvier 2026