Fabryka i wspólna inicjalizacja pól

0

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();
}

0

No np. metodą znajdującą się w klasie bazowej fabryk, jeśli te właściwości miałbyś zdefiniowane w interfejsie IPartShop (albo jakiejś tam klasie bazowej).

0
somekind napisał(a):

No np. metodą znajdującą się w klasie bazowej fabryk, jeśli te właściwości miałbyś zdefiniowane w interfejsie IPartShop (albo jakiejś tam klasie bazowej).

Ok, rozumiem, że wywołuję metodę w klasie bazowej zwracającą IPartShop. Tylko jak w tym fragmencie:

    public override IPartShop BuildPartShop()
    {
        base.BuildOnu();
        ???
        return new Roof();
    }

przejść z tego co dostanę czyli IPartShop na typ Roof, żeby ustawić pozostałe właściwości?

1 użytkowników online, w tym zalogowanych: 0, gości: 1