Le but du design pattern Builder est d’encapsuler la construction d’objets complexes de sorte qu’un client puisse créer ces objets sans devoir se préoccuper des différentes étapes nécessaires à leur construction.
Lors de l’achat d’un véhicule, un vendeur crée une liasse de documents comprenant notamment le bon de commande et la demande d’immatriculation du client. Il peut construire ces documents au format HTML ou au format PDF selon le choix du client
Les participants au design pattern Builder sont les suivants :
- ConstructeurAbstrait (AbstractConstructeurLiasseVehicule) est l’abstraction contenant les signatures des méthodes qui vont construire les différentes parties du produit ainsi que la signature de la méthode permettant d’obtenir le produit, une fois celui-ci construit.
- ConstructeurConcret (ConstructeurLiasseVehiculeHtml et ConstructeurLiasseVehiculePdf) est la classe concrète implémentant les méthodes de ConstructeurAbstrait.
- Produit (AbstractLiasse) est la classe définissant le produit. Elle peut être abstraite et posséder plusieurs sous-classes concrètes (LiasseHtml et LiassePdf) en cas d’implémentations différentes.
- Directeur (Vendeur) est la classe chargée de construire le produit en utilisant l’interface exposée par ConstructeurAbstrait.
Le design pattern Builder est utilisé dans les domaines suivants :
Un client a besoin de construire des objets complexes sans avoir à connaître les détails de leur implémentation.
Un client a besoin de construire des objets complexes ayant plusieurs représentations ou implémentations.
Pour cet article, nous avons utilisé le livre ‘Design Patterns en PHP‘ comme source principale pour explorer les aspects théoriques des Design Patterns. Cette ressource a été très utile pour comprendre les concepts clés et les applications pratiques de ces modèles de conception.