Le Design Pattern Builder est un patron de conception de création qui permet de construire des objets complexes étape par étape. Il permet de produire différentes variations ou représentations d’un objet en utilisant le même code de construction.
L’idée ici est de prendre toutes les étapes de construction de l’objet et de 👍
- créer une interface qui représente les étapes
- construire des builders différentes
- avoir un directeur de construction qui chapeaute les étapes
Deux bonnes pistes pour penser à le mettre en place 👍
- Un constructeur avec plus de 3 paramètres
- Des héritages par dizaine pour gérer tous les cas de construction
Construisons une interface qui permet de lister les étapes de la construction d’une partie
internal interface IGameBuilder
{
void Reset();
void PreparePlayer();
void PrepareEnnemies();
Game Generate();
}
Puis un directeur qui consolide le tout
internal class GameDirector
{
private readonly IGameBuilder builder;
public GameDirector(IGameBuilder builder)
{
this.builder = builder;
}
public Game Build()
{
this.builder.PreparePlayer();
this.builder.PrepareEnnemies();
return this.builder.Generate();
}
}
Et enfin ajoutons un créateur
internal class DefaultGameBuilder : IGameBuilder
{
private Game? game = null;
public Game? Generate()
{
return this.game;
}
public void PrepareEnnemies()
{
this.game?.AddEnemy(new Enemy(new Baguette()));
}
public void PreparePlayer()
{
this.game?.AddPlayer(new Player());
}
public void Reset()
{
this.game = new Game();
}
}
Pour l’utiliser
GameDirector director = new (new DefaultGameBuilder());
Game? game = director.Build();
Yes, ça attire ta curiosité ?