public static void Main()
var woodenDoorFactory = new WoodenDoorFactory();
var woodenDoor = woodenDoorFactory.MakeDoor();
var woodenDoorFittingExpert = woodenDoorFactory.MakeFittingExpert();
woodenDoor.GetDescription();
woodenDoorFittingExpert.GetDescription();
var ironDoorFactory = new IronDoorFactory();
var ironDoor = ironDoorFactory.MakeDoor();
var ironDoorFittingExpert = ironDoorFactory.MakeFittingExpert();
ironDoor.GetDescription();
ironDoorFittingExpert.GetDescription();
public void GetDescription()
Console.WriteLine("I am a wooden door");
public void GetDescription()
Console.WriteLine("I am a iron door");
interface IDoorFittingExpert
class Welder : IDoorFittingExpert
public void GetDescription()
Console.WriteLine("I can only fit iron doors");
class Carpenter : IDoorFittingExpert
public void GetDescription()
Console.WriteLine("I can only fit wooden doors");
IDoorFittingExpert MakeFittingExpert();
class WoodenDoorFactory : IDoorFactory
public IDoorFittingExpert MakeFittingExpert()
class IronDoorFactory : IDoorFactory
public IDoorFittingExpert MakeFittingExpert()