Witam
Mam taką sytuację, gdzie mamy:
User - jest klasą abstrakcyjną,
Employee - klasa pochodna dziedzicząca po User,
Administrator - klasa pochodna dziedzicząca po User.
Mam metodę, która zwraca Usera, zależnie od typu danych logowania, wygląda to mniej więcej tak:
public User GetUserData(SqlDataReader reader)
{
if (reader.GetInt32(4) == (int) PermissionLevel.Employee)
{
using (var repo = new RepositoryEmployee())
{
return repo.FindUserByLogin(reader.GetString(0), reader.GetString(1)); // Metoda zwraca obiekt klasy Employee z danymi logowania
}
}
else if (reader.GetInt32(4) == (int) PermissionLevel.Administrator)
{
// analogicznie
}
}
Inaczej ujmując zależnie od podanego typu enum, czyli poziomu dostępu zwracam obiekt, który dziedziczy po klasie User, czyli albo Employee albo Administrator - wywołując odpowiedną metodę na repozytorium.Czy istnieje jakiś wzorzec projektowy na taką sytuację ? Pytam ponieważ uczę się zastosowania wzorców projektowych. Myślałem o strategii, ale uznałem to za błędne rozwiązanie mojego