Defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
Allows programmers to request object and have the correct type created behind the scene and returned.


CarFactory Example
public class CarFactory
{
public static void GetACar()
{
var factory = new SedanCarFactory() as IVehicleFactory;
var myHonda = factory.GetCar("Honda");
var myKia = factory.GetCar("Kia");
Console.WriteLine($"Honda Price is: {myHonda.Price}, Kia Price is: {myKia.Price}");
}
}
// Product
public abstract class ICar
{
public decimal Price { get; set; }
}
// Concrete Product
public class HondaCar : ICar
{
public HondaCar()
{
Price = 15000;
}
}
// Concrete Product
public class KiaCar : ICar
{
public KiaCar()
{
Price = 16000;
}
}
// Concrete Product
public class ChevyTruck : ICar
{
public ChevyTruck()
{
Price = 25000;
}
}
//Creator
interface IVehicleFactory
{
ICar GetCar(string brandName);
}
//Concrete Creators
public class SedanCarFactory : IVehicleFactory
{
public ICar GetCar(string brandName)
{
if(brandName == "Honda")
{
return new HondaCar();
} else if (brandName == "Kia")
{
return new KiaCar();
} else
{
throw new ArgumentException("Invalid Brand Name");
}
}
}
Output
Honda Price is: 15000, Kia Price is: 16000
- Log in to post comments
Tags
