public interface ICardFactory
IMonsterCard CreateMonsterCard();
ISpellCard CreateSpellCard();
public interface IMonsterCard
public interface ISpellCard
public class DragonMonsterCard : IMonsterCard
Console.WriteLine("¡El Dragón Ataca con 3000 puntos de ataque!");
public class WarriorMonsterCard : IMonsterCard
Console.WriteLine("¡El Guerrero Ataca con 2000 puntos de ataque!");
public class PowerSpellCard : ISpellCard
Console.WriteLine("¡El Hechizo de Poder aumenta el ataque del monstruo en 1000 puntos!");
public class DestructionSpellCard : ISpellCard
Console.WriteLine("¡El Hechizo de Destrucción destruye un monstruo enemigo!");
public class DragonFactory : ICardFactory
public IMonsterCard CreateMonsterCard()
return new DragonMonsterCard();
public ISpellCard CreateSpellCard()
return new PowerSpellCard();
public class WarriorFactory : ICardFactory
public IMonsterCard CreateMonsterCard()
return new WarriorMonsterCard();
public ISpellCard CreateSpellCard()
return new DestructionSpellCard();
public static void Main()
ICardFactory dragonFactory = new DragonFactory();
IMonsterCard dragon = dragonFactory.CreateMonsterCard();
ISpellCard powerSpell = dragonFactory.CreateSpellCard();
Console.WriteLine("Cartas de la fábrica de dragones:");
ICardFactory warriorFactory = new WarriorFactory();
IMonsterCard warrior = warriorFactory.CreateMonsterCard();
ISpellCard destructionSpell = warriorFactory.CreateSpellCard();
Console.WriteLine("\nCartas de la fábrica de guerreros:");
destructionSpell.CastSpell();