Builder
Nota bene : Ce contenu a été généré par IA. Je suis en train de travailler sur cette page pour proposer un contenu personnel et d'une meilleure qualité.
L'idée en bref
Le pattern Builder sert à fabriquer un objet composé de plusieurs parties, en plusieurs étapes, tout en gardant le code lisible.
Au lieu d'appeler un constructeur avec 12 arguments dont la moitié sont None, on enchaîne des méthodes explicites (avec_pate(), avec_sauce(), etc.) puis on finalise avec build().
À retenir : on sépare comment on construit l'objet de ce qu'on obtient à la fin. Le
builder accumule les choix ; build() produit le résultat final.
C'est utile quand :
- beaucoup d'options sont optionnelles ;
- l'ordre des étapes compte ;
- on veut empêcher un objet incomplet d'exister (tant que
build()n'a pas été appelé).
Exemple : une pizza en plusieurs étapes
Imaginons une Pizza dont la recette se compose au fil de l'eau. Le builder rend chaque choix visible dans le code.
Chargement…
Sortie console
Pizza(pâte:fine, sauce:tomate, garniture:mozzarella, garniture:basilic)
Chaque méthode du builder retourne self : c'est ce qui permet la chaîne .pate(...).sauce(...).build().
Exemple : filtrer un rapport de données
Même logique côté data : un rapport peut avoir un titre, des filtres, un tri et un format d'export — sans tout passer au constructeur d'un coup.
Chargement…
Sortie console
Ventes Q1 | filtres=[('region', '=', 'EU'), ('montant', '>', 1000)] | tri=date | export=xlsx
Ici le builder évite un appel du type Rapport(titre, filtres, tri, format, ...) difficile à lire et à faire évoluer quand on ajoute une nouvelle option.