【发布时间】:2016-10-20 02:38:17
【问题描述】:
我有以下一组接口和类。
注意doSomething 方法。在调用对象的接口方法之前,它必须检查对象的实例。我想避免这种情况,因为它涉及在添加新车辆时更改此方法。在 Spring 中执行此操作的最佳方法是什么?
class SomeService {
@Autowired
VehicleRepairService<Car> carRepariService;
@Autowired
VehicleRepairService<Truck> truckRepairService;
public void doSomething(String vehicleId) {
Vehicle vehicle = getVehicle(vehicleId);
if(vehicle instanceof Car) {
carRepairService.repair(vehicle);
} else {
truckRepairService.repair(vehicle);
}
}
}
interface VehicleRepairService<T extends Vehicle> {
void repair(T vehicle);
}
class CarRepairService implements VehicleRepairService<Car> {
@Autowired
SomeDependency some;
void repair(Car vehicle) {
.......
}
}
class TruckRepairService implements VehicleRepairService<Car> {
@Autowired
DifferentDependency different;
void repair(Truck vehicle) {
.......
}
}
【问题讨论】: