我的项目中有一组类(以下是策略模式)。在主函数中,我从服务器收到一个枚举值,并基于该值创建基类类型的对象。如何使用枚举解决类的类型
我正在使用switch/case语句来实现此目的。我在某处读到Open/Closed原理不允许在添加新类时打开添加新的case语句的函数。
我正在考虑使用Activator.CreateInstance()
。有没有什么缺点。
是否有任何其他方式从枚举类型创建对象?
下面的添加,即使它不是一个完全成熟的策略模式
abstract public class Mammal
{
public abstract void MakeSound()
}
class Cat:Mammal
{
public override void MakeSound()
{
Console.WriteLine("Meow");
}
}
class Dog:Mammal
{
public override void MakeSound()
{
Console.WriteLine("Bow");
}
}
Main()
{
MammalTypes mammalType = RecieveValueFromServer();
Mammal mammalBase
switch(mammalType) // need to make this dynamic depending upon Enum type
{
case MammalTypes.Cat:mammalBase = new Cat()
break;
case MammalTypes.Dog:mammalBase = new Dog()
break;
}
mammalBase.MakeSound()
}
这是** NOT **面向对象。基类不应该知道它的派生类。 – gdoron
很难想象你做了什么。请添加您写到您的问题的代码。 – Abbas