从层次结构中检索特定 类

Retrieve specific Classes from hierarchy

我的程序的任务是模拟汽车服务站的工作流程。它的一部分是登记进入的车辆(可以是汽车、卡车或公共汽车)。根据车辆类型,程序必须选择可以修理的车辆部件。 对于汽车 - 船体、断裂、车轮。 对于卡车 - 与汽车和液压系统相同。 对于公共汽车 - 与汽车和内饰相同。

我已经创建了下一组 类:

//vehicle types
public abstract class Vehicle {}

public class Car : Vehicle {}

public class Truck : Vehicle {}

public class Bus : Vehicle {}

//vehicle parts types
public abstract class VehiclePart
{

    public short State { get; set;}

    public string Name
    {
        get { return this.GetType().Name; }
    }
}

public abstract class CarVehiclePart : VehiclePart { }

public abstract class TruckVehiclePart : VehiclePart { }

public abstract class BusVehiclePart : VehiclePart { }


public class Hull : CarVehiclePart { }

public class Wheels : CarVehiclePart { }

public class Breaks : CarVehiclePart { }

public class Hydraulics : TruckVehiclePart { }

public class Interior : BusVehiclePart { }

public class Handrail : BusVehiclePart { }

我试图实现的是获得 类 的完整列表,展示每种车辆的零件。 我可以用这些 类 还是应该重写这个 huerarchy?

提前致谢。

我建议将零件建模为枚举而不是 类。此外,您还可以通过方法 GetPartsToRepair 使用多态性。当对象是 Car 类型时,返回每种车辆类型需要修理的 3 个零件,如果是 Truck 类型,则添加 Hydraulics,如果是 Bus,则添加 Interior。

会是这样的:

public enum VehiclePart{
  Hull,
  Wheels,
  Breaks,
  Hydraulics,
  Interior,
  Handrail,
}

//vehicle types
public abstract class Vehicle {
    public virtual List<VehiclePart> GetPartsToRepair(){
        return new List<VehiclePart>(){ VehiclePart.Hull, VehiclePart.Wheels, VehiclePart.Breaks };
    }
}

public class Car : Vehicle { }

public class Truck : Vehicle 
{
    public override List<VehiclePart> GetPartsToRepair(){
        var result = base.GetPartsToRepair();
        result.Add(VehiclePart.Hydraulics);
        return result;
    }
}

public class Bus : Vehicle 
{
    public override List<VehiclePart> GetPartsToRepair(){
        var result = base.GetPartsToRepair();
        result.Add(VehiclePart.Interior);
        return result;
    }
}