我的項目中有一組類(以下是策略模式)。在主函數中,我從服務器收到一個枚舉值,並基於該值創建基類類型的對象。如何使用枚舉解決類的類型
我正在使用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