【发布时间】:2020-01-29 15:12:06
【问题描述】:
我有一个类(例如,Vehicle),我还有一些其他类继承它(Car Inherits Vehicle;Truck Inherits Vehicle;等等) 在实例化对象之前,我不会知道继承类是什么。继承后可以更改类吗?例如,我是否可以实例化一个 Vehicle,执行一些逻辑来确定它是 Car 还是 Truck,然后将 Car 或 Truck 类应用于它?
目前我必须预先查询以找出它是什么类型的车辆,然后使用开关/案例来实例化适当的类。如果可能的话,我想缩小它并消除预查询;似乎应该有更好的方法来做到这一点。
任何意见或建议将不胜感激。我可以使用 PHP 或 C# 构建。
【问题讨论】:
-
您能否详细说明为什么在实例化对象之前您不知道继承类是什么?感觉就像你有某种“VehicleBaseData”和一些逻辑(在继承类中?或者可能是 Vehicle 类?)来决定,哪个继承类最合适。因此,与其直接尝试实例化
Vehicle,不如创建一个具有该决策逻辑的工厂,然后实例化一个VehicleBaseData,并将其交给工厂以接收正确继承类的实例?