C#中用于实例化不同子类的引用对象的优秀设计模式是什么?

时间:2016-05-12 04:47:45

标签: c# design-patterns refactoring class-design

我有一位经理从存储库中读取对象。对象基于存储的枚举属性引用已知基类的其他对象。

知道在参考对象上查询哪个管理器/存储库有什么好的设计模式?存储类型的物体上的开关块将很快失控。

例如:

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.
    }
}

有人能指出我正确的方向吗?任何推荐的书?

编辑:数据库中有每种类型的动物表。

1 个答案:

答案 0 :(得分:0)

我认为工厂方法模式在这里很有用。

Wikipedia Link

  

工厂方法模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而无需指定将要创建的对象的确切类

此外,这里有几篇关于在C#中实现它的文章: Factory MethodAbstract Factory

编辑:这是一本关于设计模式的着名书籍 - Design Patterns: Elements of Reusable Object-Oriented Software