【发布时间】:2023-04-14 10:23:02
【问题描述】:
考虑我有一些 抽象 Vehicle 类和汽车、卡车、摩托车抽象类,它们派生自 Vehicle。还想象一下,我必须能够为卡车和摩托车创造一辆基于燃料的汽车或电动汽车等等。 (具体类)
两个问题:
1.考虑我想在不知道它是什么的情况下以多态方式在车辆中填充能量。例如,如果车辆是基于燃料的,我想用燃料填充它,该方法应该使用 3 个参数:void FillUpEnergy(EfuelType i_fuelType,int amounOfEnergy, int maxAmountOfEnergy)
但是对于基于电动的车辆,我需要几乎相同的功能签名,但这次当然没有燃料类型,例如(2 个参数):
void FillUpEnergy(int amounOfEnergy, int maxAmountOfEnergy)
我可以在上述约束条件下使用多态FillUpEnergy 方法吗? (不同方法的签名)
2.在我的实现中,所有具体类都包含Engine(另一个抽象类)的引用,它代表FuelEngine 或ElectricEngine(我拥有的其他从引擎派生的具体类)。例如,我有一个名为 ElectricCar 的具体类,它包含对 ElectricEngine 的引用。
这种架构足够好还是有更好的方法来实现车库系统?
(在面向对象设计等方面。)
【问题讨论】:
-
我不太明白 1) 至于 2),它被称为 Bridge,它是一种设计模式。
-
桥接模式也是我的第一个想法。
标签: c# oop inheritance polymorphism