Bonjour,

Envoyé par
Colin Damon
Pour ces raisons, j'utilise aujourd'hui beaucoup (trop ?) de Builders dans la construction des produits sur lesquels je travaille et je ne peux que vous inviter à en faire autant ! (Même si c'est un peu verbeux, il faut bien l'admettre).
La technique présentée dans la première partie de l'article est une simulation de la fonctionnalité des
paramètres nommés. La mise en place est verbeuse en Java car ce langage n'a pas (encore ?) de sucre syntaxique pour supporter cette fonctionnalité de manière conviviale.
C'est un point sur lequel Python s'en sort bien :
https://docs.python.org/3/tutorial/c...ction-examplesEn C++, il n'y a pas non plus de support natif des paramètres nommés. La solution de contournement est la même que celle de l'article de Colin Damon, mis à part que la communauté C++ l'appelle le
named parameter idiom.
Pour revenir à l'article ajouté à Developpez.com, quand j'avais lu dans le titre
patron de conception Builder, j'avais pensé au patron de conception
Builder défini dans le célèbre livre
Design patterns: elements of reusable object-oriented software (1994). Mais les exemples de l'article de Colin Damon ne sont pas toujours compatibles avec la définition de ce livre. Cela dit, dans son article, Colin Damon n'a pas affirmé suivre le livre à la lettre. Le livre n'a pas été mentionné.
Quelques détails sur le patron de conception
Builder défini dans le livre :
L'exemple introductif est celui-ci :

Ici, le patron de conception
Builder sert à découpler le parsing d'un fichier RTF du traitement qui est fait derrière. Pour ajouter un nouveau traitement, il faut ajouter une nouvelle classe qui dérive de
TextConverter.
Le schéma général donné est celui-ci :

L'explication donnée dans le livre insiste sur la présence d'une interface abstraite par dessus les
builders :

Envoyé par
Design patterns: elements of reusable object-oriented software
It lets you vary a product's internal representation. The Builder object provides the director with an abstract interface for constructing the product. The interface lets the builder hide the representation and internal structure of the product. It also hides how the product gets assembled. Because the product is constructed through an abstract interface, all you have to do to change the product's internal representation is define a new kind of builder.
Un peu plus loin, on a un autre exemple, codé en C++, avec une classe de base
MazeBuilder qui a 4 fonctions virtuelles
void BuildMaze(),
void BuildRoom(int room),
void BuildDoor(int roomFrom, int roomTo) et
Maze* GetMaze().
2 |
0 |