Wzorzec fabryki dla prostego podziału

0

Witam,

mam projekt w MVC (ASP.NET żeby być dokładnym, ale myślę, że w innych technologiach będzie podobnie) - w kotrolerze (np. Animal) jest metoda GetData, która zwraca partial view wraz z modelem reprezentującym dane różnych zwierzaczków. Przyjmuje ona jeden parametr typu string informujący o typie - może być to ptak, płaz, gad, ssak lub ryba. Dla każdego typu zwierzątka dane pobierane są z innych miejsc za pomocą różnych metod (GetSpecificDataForBirds(), GetSpecificDataForFishes(), GetSpecificDataForMammals() itp.), które zwracają viewmodel z pobranymi i odpowiednio przetworzonymi danymi z db.
Pojawia się tutaj pytanie: czy obsłużyć to w kontrolerze za pomocą najprostszego switcha:

switch(animalType)
{
    case "bird":
        var model = _animalService.GetSpecificDataForBirds();
        return View("BirdsPartialView", model);
    case "fish":
       var model = _animalService.GetSpecificDataForFishes();
       return View("FishesPartialView", model);
    //itd. ...
}

Czy jest sens angażować w to fabrykę? Sam switch wydaje się najprostszy i najbardziej czytelny, ale z drugiej strony przykład, który opisałem jest wręcz podręcznikowym przypadkiem dla wzorca fabryki. W przypadku użycia wzorca pozostaje jeszcze kwestia zwracania odpowiednich nazw dla partial view.

0

To zależy od kontekstu użycia. Generalnie ten switch, którego napisałeś, w zasadzie już pełni funkcję fabryki tylko, że nie opakowanej w osobną klasę. Pytanie, czy jest szansa, że ten switch jeszcze się gdzieś pojawi, i czy nie wygodniej byłoby Ci mieć osobny obiekt.

1

A może lepiej mieć różne rodzaje serwisów, które zwracają dane specyficzne dla konkretnych gatunków, a w kontrolerze używać specyficznego serwisu i żaden switch nie będzie potrzebny?

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