让我们说我们有这样的事情:
abstract class Object {
void foo(){
...
}
}
class ObjectA extends Object {
...
}
class ObjectB extends Object {
...
}
class ObjectC extends Object {
...
}
基于类型在一组扩展类之间切换的最佳方法是什么?我不喜欢以下解决方案,感觉很脏:
...
Object obj;
switch(type) {
case "A":
obj = new ObjectA();
break;
case "B":
obj = new ObjectB();
break;
case "C":
obj = new ObjectC();
break;
default:
Throw error? Assign some default?
}
obj.foo();
...
答案 0 :(得分:0)
您正在寻找Factory Method - 一种基于某些参数创建对象的方法。在您的情况下,该方法将类似于:
Object ObjectFactory(string type)
{
switch(type) {
case "A":
return new ObjectA();
case "B":
return new ObjectB();
case "C":
return new ObjectC();
default:
// Indicate error somehow
}
}