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
.