Factory Method Example
namespace FactoryMethodExample
{
using System;
internal class Program
{
private static void Main(string[] args)
{
var car = new FordFiesta(); // concrete implementation
// Factory method => No concrete implementation
var factory = new FordFiestaFactory() as ICreateCars;
var myCar = factory.CreateACar("red");
Console.WriteLine("Make: " + myCar.Make + " " + myCar.Model + " " + myCar.Colour);
Console.ReadLine();
}
private interface ICreateCars
{
Car CreateACar(string colour);
}
private class FordFiestaFactory : ICreateCars
{
public Car CreateACar(string colour)
{
return new FordFiesta { Colour = colour };
}
}
public abstract class Car
{
public string Make { get; set; }
public string Model { get; set; }
public string EngineSize { get; set; }
public string Colour { get; set; }
}
public class FordFiesta : Car
{
public FordFiesta()
{
Make = "Ford";
Model = "Fiesta";
EngineSize = "1.1";
}
}
}
}