public double Latitude {get; set;}
public double Longitude {get; set;}
public interface ILocationFactory
void WriteLocation(Location location);
public class Home : ILocationFactory
public Location GetLocation()
return new Location{Latitude = 40.741895, Longitude = -73.989308 };
public void WriteLocation(Location location)
Console.WriteLine("My Home location resides at latitude: " + location.Latitude + " and longitude: " + location.Longitude + " .");
public class Business : ILocationFactory
public Location GetLocation()
return new Location{ Latitude = 40.65133155546328, Longitude = -74.26483815644531 };
public void WriteLocation(Location location)
Console.WriteLine("My Business location resides at latitude: " + location.Latitude + " and longitude: " + location.Longitude + " .");
public abstract class LocationFactory
public abstract ILocationFactory GetPlace(string Place);
public class ConcreteLocationFactory : LocationFactory
public override ILocationFactory GetPlace(string Place)
throw new ApplicationException(string.Format("Location '{0}' cannot be created", Place));
public static void Main(string[] args)
LocationFactory factory = new ConcreteLocationFactory();
ILocationFactory home = factory.GetPlace("Home");
Location locationOfHome = home.GetLocation();
home.WriteLocation(locationOfHome);
ILocationFactory business = factory.GetPlace("Business");
Location locationOfBusiness = business.GetLocation();
business.WriteLocation(locationOfBusiness);