我有一个接口,它的2个实现说:Java接口:调用一个实现类基于对象类型
public interface ObjectProcessor {
public void process(List<String> objectNames);
}
public CarImpl implements ObjectProcessor {
@override
public void process(List<String> carNames){
//car logic
} }
public VanImpl implements ObjectProcessor {
@override
public void process(List<String> vanNames){
//van logic
}
}
现在谁使用这个接口调用者的样子:
public void caller(VehicleType vehicleType, List<String> vehicleNames) {
ObjectProcessor processor = null ;
if (VehicleType == VehicleType.CAR) {
processor = new CarImpl();
processor.process(vehicleNames);
}
}
VehicleType是ENUM 这工作正常。但是,无论如何,我可以动态调用一个接口,而不需要添加if语句
。将来如果我支持另一种车辆,则需要添加if语句以及接口的新实现。我怎样才能避免这种情况?
使用[* factory *](https:// en .wikipedia.org/wiki/Factory_%28object-oriented_programming%29)或[* builder *](https://en.wikipedia.org/wiki/Builder_pattern)。 –
我不确定,但使用反射可以帮助你,它会消除每次添加开关盒的开销。但从时间复杂度来看,使用反射是昂贵的过程。 – Vishrant