我有以下场景:我说过一个车辆类,每个车辆组件都有几个字段:
public WheelBase Wheels;
public EngineBase Engine;
public TrainBase DriveTrain;
对于每个汽车组件,都有几个从基类继承的类,例如我们可能有:V8Engine:EngineBase、V6Engine:EngineBase、I6Engine:EngineBase,等等。
如果我想将汽车的装载保存在标准数据库(例如文本文件)中,并且当我需要装载汽车时,我需要知道应该装载哪个“子类型”组件。例如,我想加载一辆具有 V6Engine:EngineBase、SummerTireWheel:WheelBase、ManualTrain:TrainBase 的汽车。
存储和检索此信息的最佳方式是什么?我能想到的唯一方法是将“子类型”的名称保存在数据库中,并使用一组开关来创建正确类型的组件,例如:
switch(EngineType)
{
case "V8Engine" :
Engine = new V8Engine();
break;
case "V6Engine" :
Engine = new V6Engine();
break;
case "I6Engine" :
Engine = new I6Engine();
break;
}
这种方法当然有效,但我觉得它非常难看。有没有更优雅的方法来处理这种类型的场景?