class ConcreteProductA : IProduct{
Console.WriteLine("Product A");
class ConcreteProductB : IProduct{
Console.WriteLine("Product B");
public abstract IProduct FactoryMethod();
class ConcreteCreatorA : Creator{
public override IProduct FactoryMethod(){
return new ConcreteProductA();
class ConcreteCreatorB : Creator{
public override IProduct FactoryMethod(){
return new ConcreteProductB();
Creator[] creators = new Creator[2];
creators[0] = new ConcreteCreatorA();
creators[1] = new ConcreteCreatorB();
foreach (Creator creator in creators)
IProduct product = creator.FactoryMethod();