Factory Method pattern in C#
This code shows how to use factory method pattern in C#
using System;
using System.Collections;
namespace DoFactory.GangOfFour.Factory.Structural
{
class MainApp
{
static void Main()
{
Creator[] creators = new Creator[2];
creators[0] = new ConcreteCreatorX();
creators[1] = new ConcreteCreatorY();
foreach(Creator creator in creators)
{
Product product = creator.FactoryMethod();
Console.WriteLine("Created {0}",
product.GetType().Name);
}
Console.Read();
}
}
abstract class Product
{
}
class ConcreteProductX : Product
{
}
class ConcreteProductY : Product
{
}
abstract class Creator
{
public abstract Product FactoryMethod();
}
class ConcreteCreatorX : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductX();
}
}
class ConcreteCreatorY : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductY();
}
}
}
Another Sample