从层次结构中检索特定类

尤金

我的程序的任务是模拟汽车服务站的工作流程。其中一个部分是来车登记(可以是汽车、卡车或公共汽车)。根据车辆类型程序必须选择可以修理的车辆部件。用于汽车 - 船体、刹车片、车轮。对于卡车 - 与汽车和液压系统相同。对于巴士 - 与汽车和内饰相同。

我创建了下一组类:

//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 { }

我试图实现的是获取完整的类列表,为每种类型的车辆提供零件。我可以用这些类来做到这一点还是应该重写这个色相?

提前致谢。

胡安

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

它会是这样的:

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;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章