Tuesday, April 26, 2011

Factory Patterns

  • The job of the Factory design pattern is to create concrete sub classes. You can see the Factory design pattern used throughout the .NET Framework.
  • The essence of the Factory Pattern is to "Define an interface for creating an object, but let the subclasses decide which class to instantiate. 
  • The Factory method lets a class defer instantiation to subclasses." Factory methods encapsulate the creation of objects. 
  • This can be useful if the creation process is very complex, for example if it depends on settings in configuration files or on user input.

A C# example of the Factory Pattern
// A Simple Interface
public interface IVehicle
{
void Drive(int miles);
}

// The Vehicle Factory
public class VehicleFactory
{
public static IVehicle getVehicle(string Vehicle)
{
switch (Vehicle) {
case "Car":
return new Car();
case "Lorry":
return new Lorry();
default:
throw new ApplicationException(string.Format("Vehicle '{0}' cannot be created", Vehicle));
break;
}
}
}

// A Car Class that Implements the IVehicle Interface
public class Car : IVehicle
{
public void IVehicle.Drive(int miles)
{
// Drive the Car
}
}

// A Lorry Class that Implements the IVehicle Interface
public class Lorry : IVehicle
{
public void IVehicle.Drive(int miles)
{
// Drive the Lorry
}
}

No comments:

Post a Comment