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é ?