Disons que je crée un jeu de sport, et dans ce jeu il y a différentes positions qu'un joueur peut jouer, attaquer, défendre, etc. Donc je commence par créer une classe de base:Besoin d'un motif de design pour supprimer les enums et changer de déclaration dans la création d'objet
public abstract class Position
{
public abstract string Name
{
get;
}
}
et les sous-classes ...
public class Defender : Position
{
public override string Name
{
get { return "Defender"; }
}
}
et ainsi de suite. Tout va bien.
Mais maintenant j'ai besoin d'une fonction pour créer ces objets. J'ai besoin d'une fonction de création par position. Une solution possible est donc de créer une énumération de toutes les positions et de passer cette valeur à une fonction qui active l'énumération et renvoie l'objet approprié. Mais cela déclenche mon alarme de code. Cette soultion relie les classes, l'ENUM et l'interrupteur dans une fonction:
public static Position GetByType(Types position)
{
switch(position)
{
case Types.Defender:
return new Defender();
... and further terrible code
Quelle solution dois-je envisager? Quel est le motif de conception?
Pour l'instant j'utilise un dictionnaire. Dans le futur je voudrais que cette étape soit configurable donc cette réponse va m'aider le plus, merci! – DanDan