Zakładając, że mam kod fabryki jak poniżej oraz, że Roof, Floor oraz Wall posiadają część właściwości, które inicjalizuje się tak samo to w jaki sposób powinienem to w tym przykładzie wydzielić, żeby nie powielać kodu?
public interface IPartShop { }
class Roof : IPartShop { }
class Floor : IPartShop { }
class Wall : IPartShop { }
public abstract class PartShopFactory
{
public abstract IPartShop BuildPartShop();
}
public class RoofFactory : PartShopFactory
{
public override IPartShop BuildPartShop()
{
return new Roof();
}
}
public class FloorFactory : PartShopFactory
{
public override IPartShop BuildPartShop()
{
return new Floor();
}
}
public class WallFactory : PartShopFactory
{
public override IPartShop BuildPartShop()
{
return new Wall();
}
}
static void Main(string[] args)
{
PartShopFactory pathShopFactory = new RoofFactory();
IPartShop roof = pathShopFactory.BuildPartShop();
Console.ReadKey();
}