我有一位经理从存储库中读取对象。对象基于存储的枚举属性引用已知基类的其他对象。
知道在参考对象上查询哪个管理器/存储库有什么好的设计模式?存储类型的物体上的开关块将很快失控。
例如:
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.
}
}
有人能指出我正确的方向吗?任何推荐的书?
编辑:数据库中有每种类型的动物表。
答案 0 :(得分:0)
我认为工厂方法模式在这里很有用。
工厂方法模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而无需指定将要创建的对象的确切类
此外,这里有几篇关于在C#中实现它的文章: Factory Method,Abstract Factory
编辑:这是一本关于设计模式的着名书籍 - Design Patterns: Elements of Reusable Object-Oriented Software