我正在设计一个API,用于处理不同类型的车辆,例如汽车,公共汽车和货车。有一个端点POST /vehicle
将采用已定义的主体。
{
'registration': 'str',
'date_of_purchase': 'datetime str',
'vehicle_type': 'car'
...
}
我们要做的第一件事是根据vehicle_type加载对象。
if body[vehicle_type] == 'car':
passed_in_vehicle = Car(body)
elif body['vehicle_type'] == 'bus':
passed_in_vehicle = Bus(body)
...
在python程序中,有多个类,包括:
API入口点进入Vehicles.py,它执行一些逻辑,然后根据输入将其路由到其他类之一以执行更具体的逻辑。
每个类具有相同的基本方法集。
目前在Vehicles.py的底部,我有
if is_instance(passed_in_vehicle, Car):
carService = Cars()
carService.register_vehicle(passed_in_vehicle)
elif is_instance(passed_in_vehicle, Van):
vanService = Vans()
vanService.register_vehicle(passed_in_vehicle)
...
但是,这不能扩展。根据条件路由到特定类的正确解决方案是什么?
我不知道使用本地语言是否理想,但是至少我相信它会比您当前的解决方案更好地扩展:
class car(object):
def print():
print("I'm a car")
class bus(object):
def print():
print("I'm a bus")
vehicle_type = "car"
currV = locals()[vehicle_type]
#vehicle_subclass_instance.register_vehicle
currV.print()
vehicle_type = "bus"
currV = locals()[vehicle_type]
#vehicle_subclass_instance.register_vehicle
currV.print()
输出:
I'm a car
I'm a bus