Est-ce une bonne idée d'avoir une classe de fabrique utilisant des génériques pour instancier des objets?Est-ce une bonne idée d'avoir une classe de fabrique utilisant des génériques pour instancier des objets?
Disons que j'ai un animal de classe et des sous-classes (chat, chien, etc.):
abstract class Animal
{
public abstract void MakeSound();
}
class Cat : Animal
{
public override void MakeSound()
{
Console.Write("Mew mew");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.Write("Woof woof");
}
}
static class AnimalFactory
{
public static T Create<T>() where T : Animal, new()
{
return new T();
}
}
Puis dans mon code je voudrais utiliser AnimalFactory comme ceci:
class Program
{
static void Main(string[] args)
{
Dog d = AnimalFactory.Create<Dog>();
d.MakeSound();
}
}
Qu'est-ce que vous espérez gagner sur TBE façon simple: programme classe { static void Main (string [] args Les) { chien d = nouveau chien(); d.MakeSound(); } } – Anthony
Une usine est utile lorsque vous ne savez pas avant l'exécution quel animal vous allez créer. Supposons que votre programme prenne le nom de la classe en tant qu'entrée et le transforme en type ... mais une instance de type n'est pas le nom de type que vous mettez dans. –