在这个简单的情况下,什么是好的设计:
假设我有一个基类Car,其中有一个方法FillTank(Fuel fuel)
,
其中fuel也是一个基类,有几个子类,例如柴油、乙醇等。
在我的叶子车类DieselCar.FillTank(Fuel fuel)
中只允许使用某种类型的燃料(没有惊喜:))。
现在我的问题是,根据我的接口,每辆汽车都可以用任何燃料加油,但我觉得这是错误的,在每个FillTank()
实现中检查输入的燃料类型是否正确,如果不正确则抛出错误或其他异常。
如何重新设计这样的情况以更准确地解决这个问题,这是可能的吗? 如何设计一个采用基类作为输入的基本方法而不会得到这些“奇怪的结果”?