
namespace FactoryMethod
{
public abstract class LightFactory
{
public abstract Light CreateLight();
}
public class BulbLightFactory : LightFactory
{
public override Light CreateLight()
{
return new BulbLight();
}
}
public class TubeLightFactory : LightFactory
{
public override Light CreateLight()
{
return new TubeLight();
}
}
}
namespace FactoryMethod
{
public abstract class Light
{
public abstract void TurnOn();
public abstract void TurnOff();
}
public class BulbLight : Light
{
public override void TurnOn()
{
Console.WriteLine("Bulb Ligh is Turned on.\n");
}
public override void TurnOff()
{
Console.WriteLine("Bulb Ligh is Turned off.\n");
}
}
public class TubeLight : Light
{
public override void TurnOn()
{
Console.WriteLine("Tube Ligh is Turned on.\n");
}
public override void TurnOff()
{
Console.WriteLine("Tube Ligh is Turned off.\n");
}
}
}
namespace FactoryMethod
{
public class Client
{
public static void Main()
{
LightFactory BulbFactory = new BulbLightFactory();
LightFactory TubeFactory = new TubeLightFactory();
Light l1 = BulbFactory.CreateLight();
Light l2 = TubeFactory.CreateLight();
l1.TurnOn();
l1.TurnOff();
Console.WriteLine("===============\n");
l2.TurnOn();
l2.TurnOff();
}
}
}