Ich habe einen Manager, der Objekte aus einem Repository liest. Die Objekte verweisen basierend auf einer gespeicherten Enumerationseigenschaft auf andere Objekte einer bekannten Basisklasse.Was ist ein gutes Entwurfsmuster in C#, um referenzierte Objekte verschiedener Unterklassen zu instanziieren?
Was ist ein gutes Entwurfsmuster, um zu wissen, welcher Manager/Repository auf das Referenzobjekt abzufragen ist? Ein Schalterblock über die gespeicherte Art des Objekts würde sehr schnell außer Kontrolle geraten.
Zum Beispiel:
public class Person
{
public Animal Pet { get; set; }
public AnimalKind PetKind { get; set; }
}
public enum AnimalKind
{
Dog,
Cat
}
public abstract class Animal
{
}
public class Dog : Animal
{
}
public class Cat : Animal
{
}
public class DogManager /**/
public class CatManager /**/
public class PersonManager
{
public IList<Person> GetPersons()
{
var persons = Repository.GetPersons();
// Pattern to instantiate person.Pet with the proper class???
// The Repository is very lightweight and does not load references.
}
}
Könnte mir jemand in die richtige Richtung? Irgendein empfohlenes Buch?
Bearbeiten: Es gibt eine Tabelle in der Datenbank für jeden Tiertyp.
Dies könnte sogar ein Anti-Pattern sein: Die Basisklasse scheint nur dort zu sein, um sie im Container zu lagern. –