我的程序的任务是模拟汽车服务站的工作流程。其中一个部分是来车登记(可以是汽车、卡车或公共汽车)。根据车辆类型程序必须选择可以修理的车辆部件。用于汽车 - 船体、刹车片、车轮。对于卡车 - 与汽车和液压系统相同。对于巴士 - 与汽车和内饰相同。
我创建了下一组类:
//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] 删除。
我来说两句